使用哈希(#)而不是查询字符串是有任何优势的

时间:2013-08-06 06:08:00

标签: php jquery html

在检查实时邮件网址时,我看到他们使用#代替Query string

https://bluxxx.mail.live.com/#n=xxxxxxxxx&fid=x

删除#时出现404错误。使用#而不是查询字符串是否有任何优势。它可以在php应用程序中实现。

2 个答案:

答案 0 :(得分:3)

经常使用散列网址代替实际返回服务器以获取其他页面(即,Javascript拦截页面加载)。

哈希及其后的任何内容通常都不会发送到服务器......

想象一下以下场景......

<a id="SomeLink" href="#DoSomething">

然后使用Javascript ...

附加onclick
$("#SomeLink").click(function() {...})

如果该点击功能不是return false,则即使尚未向服务器发出请求,该网址的末尾也会显示#DoSomething

它也可以作为占位符来操作历史记录,因此您可以更好地控制后退/前进按钮(或许多其他客户端javscript技巧)。请参阅history.js作为示例。

答案 1 :(得分:2)

URL的哈希部分主要用于客户端处理。您的javascript可以读取它,如果您的页面上有一个命名锚点,它将滚动到该内容。浏览器在加载带有散列的URL时,URL的散列部分不会发送到服务器,其中查询字符串被发送到浏览器,因此可由PHP访问。