history.pushState()更改查询值

时间:2012-05-02 20:13:30

标签: javascript jquery pushstate

如果我有一个使用history.pushState({}, "", link);功能更改的链接,例如link page.php?value=1&value2=2,是否有办法只更改value2 { {1}}功能而不是改变整个链接?

3 个答案:

答案 0 :(得分:5)

如果您要执行的操作是更改网址而不向历史记录对象添加其他条目,则可以尝试replaceState

history.replaceState({value: 1, value2: X}, "title", "page.php");

答案 1 :(得分:2)

不,因为查询字符串是URL的一部分。如果您真的不需要为服务器的目的传递这些值,您可以将它们包含在历史记录的状态对象本身中,然后您可以使用pushState()更改状态对象。例如:

history.pushState({value: 1, value2: 2}, "Title", 'page.php');
history.pushState({value: 1, value2: 'new value'}, "Title");

答案 2 :(得分:2)

您可以使用此有用功能更改查询字符串参数值:

function updateParam(url, param, value)
{  
    var re = new RegExp(param+"(.+?)(&|$)","g");

    return url.replace(re, param+'='+value)  
}