当位置哈希在URL中时,$_GET数组为空


$_GET array empty when location hash is in the URL

当我有这样的URL时:

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

然后$_GET数组如下所示:

Array
(
    [var] => foo
)

但当我有这样的URL时:

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

那么$_GET数组为空:

Array
(
)

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

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

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

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

您可以使用parse_URL()将URL解析为位,包括片段部分

哈希之后的值(包括哈希)永远不会发送到服务器,所以当您执行时

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

服务器从未看到#location?var=foo

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

最后放置#位置,这样您的链接就变成了http://website.com/?var=foo#位置

这不是url的通用格式。

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

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