2010-04-12 42 views
9

我正在使用Symfony 1.2。我有一个对象列表的视图。我可以订购它们,按类别过滤它们,或者转到下一页(有分页)。一切都通过AJAX完成,所以我不必再次加载所有页面。通过PHP/Symfony获取URL中的#part

我想实现的是例如http://urltopage#page=1&order=title&cats=1,2;所以新页面被保存在浏览器历史记录中,并且他可以将其粘贴到另一个网页。

我还没有找到获取#part的方法。我知道这只是浏览器,但我不相信我无法通过PHP。我确信有一个简单的解决方案,我错过了...

非常感谢!

+0

如果很多人告诉你,除了通过浏览器无法获取,他们可能是对的。而你不能。 – 2010-04-12 17:52:25

回答

15

你不能通过PHP获取它,因为它永远不会传输到服务器。

但是,您可以通过window.location.hash通过JavaScript获取,然后通过AJAX将其传输到服务器。

+0

谢谢,我想我将不得不重定向 – fesja 2010-04-12 18:09:46

2

正如您所说,锚点是浏览器使用的信息,并且在执行标准HTT GET请求时不会发送到服务器。

这意味着没有办法为你的PHP脚本来获取信息......


......除非你尝试使用一些基于Javascript的魔法,比如使用Ajax请求,发送一些其它附加参数这将包含锚的价值,或类似的东西......但这不会是一个标准的做事方式,我不会推荐这样做...

0

window.location.hash is唯一的方法(“散列”/锚只是客户端,永远不会被服务器看到),但是没有任何东西禁止你操纵查询字符串(转换为GET PARAMS)或者构建一个FORM JS和转换为POST参数。

这是构建AJAX javascript请求处理程序/管理器的基础知识。但最终你最终应该建立一个GET/POST“普通”网址来发送你的请求。

你也可以在一个cookie中存储散列,但是我再也不会用它来处理路由或数据传递。