在ajax调用上设置window.location.hash

时间:2011-01-31 23:32:26

标签: php javascript hash window.location

我相信这是一个非常简单的问题。

我正在使用jquery进行ajax调用,我想要的就是在调用之后设置自定义哈希,类似于:

window.location.hash = '?url=http://www.sitename.com';

但它之前返回#符号,我不想要它

www.mysitename.com/#?url=http://www.sitename.com

所以基本上如何删除#符号并在没有它的情况下附加一个干净的哈希?

谢谢。

2 个答案:

答案 0 :(得分:6)

你做不到。如果要设置查询字符串(?something=something内容),则必须通过更改location.search(仅查询字符串)或{{1}来设置它(并通过这样做导致页面重新加载) } - 没有AJAXish / Web2.0ish;)

散列是location.href符号后的客户端部分,从未发送到服务器。它纯粹是为了定位页面元素(例如,#是由散列<h2 id="something">定位的),现在将状态信息保存在URL中,以便后退/前进按钮继续在AJAX应用程序中工作(即使最终将被HTML5的pushState函数替换。

如果您仍想使用哈希,请在google-compatible way中执行此操作。基本上,这意味着您应该在散列中使用#something,其中#!something也可以是经典(非AJAX)请求中真实URL的一部分。

答案 1 :(得分:1)

网址中的hashthe MDC docs

  

#符号后面的URL部分,包括#符号。

请注意,#字符(我认为在北美称为“英镑符号”)通常称为“哈希”。

您想要设置window.location.search。这是:

  

后面的URL部分?符号,包括?符号

请注意,这会触发重新加载。如果您不想这样,则需要才能使用hash属性。