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

时间:2011-10-27 16:04:46

标签: javascript jquery html

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

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

www.mysite.com/options

当他们点击页面上的某些元素,此处的链接或单选按钮时,URL将更改为:

www.mysite.com/options?xkj340834jadf

通过这种方式,用户可以复制URL,然后转到同一页面并使其配置与以前完全相同,但我不想在点击选项时提交新请求。

使用javascript / jquery这是可能的吗?

2 个答案:

答案 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
});