Javascript 不使用新的HTTP请求修改查询字符串

Javascript 不使用新的HTTP请求修改查询字符串,javascript,jquery,html,Javascript,Jquery,Html,是否可以在不提交新HTTP请求的情况下操作查询字符串 例如,我有一个页面,允许用户对一些配置选项进行一系列更改。当他们第一次进入页面时,将显示以下URL: www.mysite.com/options 当他们单击页面上的某些元素、此处的链接或此处的单选按钮时,URL将更改为: www.mysite.com/options?xkj340834jadf 通过这种方式,用户可以复制URL,然后转到同一页面,并使配置与以前完全相同,但我不想在他们单击选项时提交新请求 这是使用javascript/j

是否可以在不提交新HTTP请求的情况下操作查询字符串

例如,我有一个页面,允许用户对一些配置选项进行一系列更改。当他们第一次进入页面时,将显示以下URL:

www.mysite.com/options
当他们单击页面上的某些元素、此处的链接或此处的单选按钮时,URL将更改为:

www.mysite.com/options?xkj340834jadf
通过这种方式,用户可以复制URL,然后转到同一页面,并使配置与以前完全相同,但我不想在他们单击选项时提交新请求


这是使用javascript/jquery可以做到的吗?

我认为这是不可能的

最好的解决方案是在URL的末尾添加锚定标记,然后jquery可以读取该标记以确定HTTP重定向

我相信当你使用
#时,谷歌也会索引用于此目的


最好的解决方案是使用散列。正如科特所说,#!这是你告诉谷歌这是一个网络应用的方式,但如果你不需要爬行,别担心

然后,您可以使用如下内容:

var hash=location.hash//或者window.location.hash
hash=hash.replace(/^..#!/,'')/脱衣舞!从价值观
//对存储在`hash`var中的值执行一些操作
如果您需要发生其他事情,例如每次哈希更改时,您都会执行一些操作,您可以绑定“hashchange”事件。例如:

我用Ben Alman的话说:

$(窗口).hashchange(函数(){
var hash=location.hash;
hash=hash.replace(/^..#!/,“”);
//每次“散列”发生变化时,都要对其进行处理
//示例:基于哈希设置页面标题。
document.title='散列为'+hash+';
return false;//这将阻止浏览器在执行所需操作后遵循#
});

我认为jQuery Adess插件是你希望jjQuery BBQ实现的,但是我不知道这个机制,所以只有一个注释。你可以考虑使用一个哈希代替一个查询字符串,它已经完成了你想要的。可能的副本和许多其他问题。你可以捕获<代码> OnLoad < /Cord>事件并将其添加到那里。