【问题标题】:How can I access the value after a # in a URL? [duplicate]如何访问 URL 中 # 之后的值? [复制]
【发布时间】:2010-01-15 15:11:46
【问题描述】:

可能的重复:
How to obtain anchor part of URL after # in php
Is it possible to access anchors in a querystring via PHP?

我需要找到一种方法来做到这一点,Facebook 做到了,所以它必须是可能的......

如果用户在浏览器中访问此 URL
http://localhost/index.php?photos=p#12345

然后我可以让我的 PHP 从 mysql 加载 ID 12345 的照片

如果用户前往
http://localhost/index.php?photos=p#123456 然后它会加载一张 ID 为 123456

的照片

我只需要帮助来获取 # 之后的 URL 中的值并尽可能使用 PHP 访问它吗?如果不可能,那么我也许可以使用 jQuery 访问它,然后根据此值进行 AJAX 调用以加载图像。

那么有谁知道我如何获得这个价值?

【问题讨论】:

标签: php javascript jquery


【解决方案1】:

您可以在 Javascript 中使用

获取哈希
document.location.hash

【讨论】:

  • 我想补充一点,浏览器永远不会发送 HTTP 请求中 # 之后的内容。
【解决方案2】:

您只能使用 Javascript 访问此值,因为它永远不会发送到服务器,因此 PHP 永远不会获取它。正如肯尼所说,您可以使用

document.location.hash

window.location.hash

但您无法使用 PHP 访问它。

Facebook 实际上是一个非常繁重的 Javascript 网站。您可能想要在页面加载后立即发送 AJAX 请求以获取图片/评论数据。然后当有人按下“下一步”按钮时,你会发出另一个请求。

【讨论】:

    【解决方案3】:

    应用程序执行此操作的方式是使用 javascript、document.location.hash 解析哈希,并使用 AJAX 或其他客户端技术动态加载图像。这个 AJAX 调用可以将哈希发布到 PHP 脚本,该脚本执行任何必要的服务器端处理并返回图像 url 或类似的东西。

    如果您使用许多浏览器或 javascript 框架支持的dom:loaded 事件,这几乎可以无缝地发生。

    【讨论】:

      【解决方案4】:

      这些值(锚点)通常不会由浏览器发送到服务器。所以你不能依赖他们。

      【讨论】:

        【解决方案5】:

        它在 JavaScript 中以 window.location.hash 的形式提供。这是一个dupe of another SO question,有一些答案。

        【讨论】:

          【解决方案6】:

          散列后的值标识文档中的一个点。它不是文档本身身份的一部分。因此,像“/path/to/something#section”这样的 URL 将导致浏览器向服务器请求“/path/to/something”,然后跳转/滚动到“section”标识的点。

          您希望将照片 ID 构建到 URL 或查询字符串中:

          http://localhost/index.php?photoId=12345

          【讨论】:

            猜你喜欢
            • 2013-09-16
            • 1970-01-01
            • 2013-06-02
            • 2017-04-25
            • 2014-07-16
            • 2016-10-23
            • 1970-01-01
            • 1970-01-01
            • 2022-01-28
            相关资源
            最近更新 更多