【问题标题】:$_GET array empty when location hash is in the URL当位置哈希在 URL 中时,$_GET 数组为空
【发布时间】:2013-07-17 04:00:01
【问题描述】:

当我有这样的网址时:

http://website.com/?var=foo

那么 $_GET 数组如下所示:

Array
(
    [var] => foo
)

但是当我有这样的 URL 时:

http://website.com/#location?var=foo

那么 $_GET 数组为空:

Array
(
)

这是正常行为吗?如果是这样,是否有针对这种情况的解决方法?

【问题讨论】:

标签: php


【解决方案1】:

这是获取 $_GET 值的正确 url 方式

http://website.com/?var=foo#location

主要问题是浏览器甚至不会发送带有片段部分的请求。片段部分在浏览器中被解析。所以它可以通过 JavaScript 访问。

您可以使用 parse_url()

将 URL 解析为位,包括片段部分

Source

【讨论】:

  • 他在问如何在哈希后获取值,而不是应该如何,他的链接非常好。
  • @MihaiIorga:如果他希望出现一些 GET 参数,他的链接并不完美。
  • 不,他问行为是否正常,女巫是。
  • @MihaiIorga 我知道计算机在解释事物时非常直接,但人类不应该这样。
  • @chris 我认为任何回答的人都没有读过这个问题,都告诉他这不是一个好的链接,但他问行为是否正常以及他有什么解决方法。
【解决方案2】:

哈希后的值(包括哈希)永远不会发送到服务器,所以当你这样做时

http://website.com/#location?var=foo

服务器永远不会看到#location?var=foo

重新排序字符串,使查询字符串出现在哈希之前。 ?var=foo#location

【讨论】:

    【解决方案3】:

    最后加上#location,这样你的链接就变成了 http://website.com/? var=foo#location

    【讨论】:

      【解决方案4】:

      这不是url的一般格式。

      #location是一个片段,应该跟在查询字符串后面

      http://website.com/?var=foo#location
      

      【讨论】:

        猜你喜欢
        • 2021-02-05
        • 2013-03-30
        • 1970-01-01
        • 1970-01-01
        • 2010-12-11
        • 2011-06-25
        • 2012-05-01
        • 1970-01-01
        • 2012-10-29
        相关资源
        最近更新 更多