Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在链接的查询字符串中使用哈希符号_Php - Fatal编程技术网

Php 在链接的查询字符串中使用哈希符号

Php 在链接的查询字符串中使用哈希符号,php,Php,我有一个“下一步”按钮在我的网站上的代码 <a href="example.php?action=next#mark" ><img src="images/next-button6.png" class="button"/></a> 然后,我只需在链接的末尾添加$x(在添加#标记之前)。很简单,但它能工作 这是正常的行为,这就是那些散列(or)的目的 随着时间的推移,它们被用来(滥用)更改web应用程序和AJAX丰富页面中的url,因此页面上的脚本可以将它们

我有一个“下一步”按钮在我的网站上的代码

<a href="example.php?action=next#mark" ><img src="images/next-button6.png" class="button"/></a>

然后,我只需在链接的末尾添加$x(在添加#标记之前)。很简单,但它能工作

这是正常的行为,这就是那些散列(or)的目的

随着时间的推移,它们被用来(滥用)更改web应用程序和AJAX丰富页面中的url,因此页面上的脚本可以将它们用作书签,以记住当用户在历史记录中来回导航时要显示(或加载)页面的哪一部分。 他们之所以使用这个片段标识符,是因为它曾经是url中唯一可以更改的部分,而无需强制重定向到新url

最终,由于在中引入了
pushState
popState
方法,这种解决方法变得过时了,但有时仍然使用哈希来实现向后兼容性

所以我想这就是你的困惑的原因

无论如何,它应该是这样工作的。如果您不想这样做,可以使用与
#
符号不同的字符,或者使用JavaScript通过设置
location.href
或调用
location.reload()
强制重新加载页面。请注意,由于片段标识符没有(或不总是)发送到服务器,因此不要在服务器端脚本中依赖它,因此即使使用JavaScript,也必须将相关信息放在url的另一部分。我认为最好的解决方案是:使用将此类信息发送到服务器


即使在使用查询字符串或JavaScript时,您仍然可以添加
#
片段,以便浏览器在加载新页面后知道跳转到哪个部分。

是,如果链接指向当前所在的页面,则这是正常的。如果
#标记
内容已经在页面上,我不确定您为什么要重新加载。这是一个有用的注释;)@达贡又是对的。除了使用#符号,还有什么其他选择?也就是说,将用户定向到下一页的特定部分。您可以使用哈希符号将它们发送到特定部分,但您也需要一个不同的url,否则该页将不会加载,因此我将使用查询字符串或查询字符串与
#
的组合。您已经这样做了,但是如果查询字符串始终为
action=next
,浏览器将看不到更改。例如,设置为
post=3
,这样每次都可以有不同的数字,或者
post=Title+的+博客
,这样就可以导航到下一篇文章的(不断变化的)标题。
if ($_GET["x"]==1) $x = "&amp;x=0";
    else $x = "&amp;x=1";