我正在使用jquery进行ajax调用,我想要的就是在调用之后设置自定义哈希,类似于:
window.location.hash = '?url=http://www.sitename.com';
但它之前返回#符号,我不想要它
www.mysitename.com/#?url=http://www.sitename.com
所以基本上如何删除#符号并在没有它的情况下附加一个干净的哈希?
谢谢。
答案 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)
网址中的hash
是the MDC docs:
#符号后面的URL部分,包括#符号。
请注意,#
字符(我认为在北美称为“英镑符号”)通常称为“哈希”。
您想要设置window.location.search
。这是:
后面的URL部分?符号,包括?符号
请注意,这会触发重新加载。如果您不想这样,则需要才能使用hash
属性。