【问题标题】:Get #part in URL with PHP/Symfony使用 PHP/Symfony 获取 URL 中的#part
【发布时间】:2010-04-12 17:46:38
【问题描述】:

我正在使用 Symfony 1.2。我有一个包含对象列表的视图。我可以订购它们,按类别过滤它们,或移至下一页(有分页)。一切都是用 AJAX 完成的,所以我不必再次加载所有页面。

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

我还没有找到获取#part 的方法。我知道这仅适用于浏览器,但我不敢相信我无法通过 PHP。我确定我缺少一个简单的解决方案...

非常感谢!

【问题讨论】:

  • 如果很多人告诉你,你只能通过浏览器才能得到它,他们可能是对的。而你不能。

标签: php url routing symfony1


【解决方案1】:

您无法通过 PHP 获取它,因为它从未传输到服务器。

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

【讨论】:

    【解决方案2】:

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

    这意味着您的 PHP 脚本无法获取该信息...


    ...除非您尝试使用一些基于 Javascript 的魔法,例如使用 Ajax 请求,发送一些包含锚点值的附加参数,或者类似的东西......但这不是一个标准的方式做事,我不建议这样做......

    【讨论】:

      【解决方案3】:

      window.location.hash 是唯一的方法(“hash”/anchor 只是客户端,服务器永远不可见),但没有什么能阻止您操作查询字符串(转换为 GET 参数)或使用构建 FORM JS 并转换为 POST 参数。

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

      您也可以将哈希存储在 cookie 中,但同样,我不会将其用作处理路由或数据传递的方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-16
        • 1970-01-01
        • 1970-01-01
        • 2017-01-08
        • 1970-01-01
        • 2023-01-25
        • 1970-01-01
        相关资源
        最近更新 更多