使用jQuery更改url查询字符串值

我有一个示例url,如:

http://domain.com/Documents/?page=1&name=Dave&date=2011-01-01

查询字符串包含当前页码和另外两个filter(名称和日期)。

使用以下URL解析器: https : //github.com/allmarkedup/purl我可以访问URL的某些部分,例如页码。

我正在尝试为用户创建一种方法,以便能够在文本框中键入数字,然后加载该页码,同时保持所有其他查询字符串不变。

 $(document).ready(function () { $('.pageNum').live('keyup', function (e) { e.preventDefault(); if (e.which == 13) { var currentUrl = window.location.href; var parsedUrl = $.url(currentUrl); var currentPageNum = parsedUrl.param('page'); var newPageNum = $(this).val(); var newUrl = // window.location.href = newUrl; } }); }); 

因此,当用户点击pageNum文本框上的返回时,它将获取当前页面URL,解析它,然后找出当前页码,然后我需要一种方法来替换页码的值与文本框中的新值创建一个新的URL,然后最后使用这个新的URL刷新页面。

是否可以更改参数值然后重新添加?

注意:附加参数可以是任何参数,因此我无法使用新页码手动将它们添加到路径名中!

purls $.params()在没有参数的情况下使用将为您提供参数的键值对象。

jQuerys $.param() .param $.param()将从提供的对象/数组构建一个查询字符串。

 var params = parsedUrl.param(); delete params["page"]; var newUrl = "?page=" + $(this).val() + "&" + $.param(params); 

更新
我不知道为什么我在这里使用delete

 var params = parsedUrl.param(); params["page"] = $(this).val(); var newUrl = "?" + $.param(params); 

如果您只需要修改页面num,则可以替换它:

 var newUrl = location.href.replace("page="+currentPageNum, "page="+newPageNum);