是否可以在不实际提交新HTTP请求的情况下操纵查询字符串?
例如,我有一个页面允许用户对某些配置选项进行一系列更改。当他们第一次进入页面时,它将是以下URL:
www.mysite.com/options
当他们点击页面上的某些元素,此处的链接或单选按钮时,URL将更改为:
www.mysite.com/options?xkj340834jadf
通过这种方式,用户可以复制URL,然后转到同一页面并使其配置与以前完全相同,但我不想在点击选项时提交新请求。
使用javascript / jquery这是可能的吗?
答案 0 :(得分:2)
我认为这不可能。
您最好的解决方案是在URL的末尾添加一个锚标记,然后jquery可以读取该标记以确定HTTP重定向。
我相信,当您为此目的使用#!
时,谷歌也会进行索引。
What's the shebang/hashbang (#!) in Facebook and new Twitter URLs for?
答案 1 :(得分:0)
最好的解决方案是使用哈希。正如柯特所说,#!是你告诉谷歌这是一个webapp的方式,但如果你不需要抓取,不要担心。
你可以使用这样的东西:
var hash = location.hash; //or window.location.hash
hash = hash.replace(/^.*#!/, ''); // strip #! from the values
//do something with the values you got stored in `hash` var
如果您需要其他事情发生,例如每次哈希更改时,您都可以执行某些操作,您可以绑定'hashchange'事件。例如:
我使用Ben Alman的jQuery hashchange event:
$(window).hashchange( function(){
var hash = location.hash;
hash = hash.replace(/^.*#!/, '');
// do something with 'hash' everytime it changes
// EXAMPLE:Set the page title based on the hash.
document.title = 'The hash is '+hash+'.';
return false; //this prevent browser from following the # after doing what you wanted
});