如何添加或更新查询字符串参数?
2022-08-29 23:17:59
使用javascript,如果不存在,如何向URL添加查询字符串参数,或者如果存在,如何更新当前值?我正在使用jquery进行客户端开发。
使用javascript,如果不存在,如何向URL添加查询字符串参数,或者如果存在,如何更新当前值?我正在使用jquery进行客户端开发。
我编写了以下函数,它实现了我想要实现的目标:
function updateQueryStringParameter(uri, key, value) {
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
var separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re)) {
return uri.replace(re, '$1' + key + "=" + value + '$2');
}
else {
return uri + separator + key + "=" + value;
}
}
更新(2020年):URLSearchParams现在被所有现代浏览器支持。
URLSearchParams 实用程序与 结合使用时非常有用。例如:window.location.search
if ('URLSearchParams' in window) {
var searchParams = new URLSearchParams(window.location.search);
searchParams.set("foo", "bar");
window.location.search = searchParams.toString();
}
Now 已设置为无论它是否已经存在。foo
bar
但是,上述分配将导致页面加载,因此,如果不需要,请使用历史记录 API,如下所示:window.location.search
if ('URLSearchParams' in window) {
var searchParams = new URLSearchParams(window.location.search)
searchParams.set("foo", "bar");
var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString();
history.pushState(null, '', newRelativePathQuery);
}
现在,您无需编写自己的正则表达式或逻辑来处理查询字符串的可能存在。
但是,浏览器支持很差,因为它目前处于实验阶段,并且仅在最新版本的Chrome,Firefox,Safari,iOS Safari,Android Browser,Android Chrome和Opera中使用。如果您决定使用它,请与polyfill一起使用。