javascript - 如何使用 Javascript/jQuery 在 URL 中添加或替换查询参数?

标签 javascript jquery regex url parameters

我正在使用 jQuery 1.12。我想替换我窗口的 URL 查询字符串中的查询字符串参数,或者如果参数不存在则添加该参数。我尝试了以下:

new_url = window.location.href.replace( /[\?#].*|$/, "?order_by=" + data_val )  
window.location.href = new_url 

但我发现这会清除查询字符串中所有以前的参数,这是我不想要的。如果查询字符串是:

?a=1&b=2

我希望新的查询字符串是:

?a=2&b=2&order_by=data

如果查询字符串是:

?a=2&b=3&order_by=old_data

它会变成:

?a=2&b=3&order_by=data

最佳答案

您可以使用 jQuery 插件为您完成所有繁重的工作。它将解析查询字符串,并为您重建更新后的查询字符串。要处理的代码少得多。

Plugin Download Page
Github Repo

// URL: ?a=2&b=3&order_by=old_data

var order_by = $.query.get('order_by');
//=> old_data

// Conditionally modify parameter value
if (order_by) { 
  order_by = “data”;
}

// Inject modified parameter back into query string
var newUrl = $.query.set(“order_by”, order_by).toString();
//=> ?a=2&b=3&order_by=data

对于那些使用 Node.js 的人,NPM 中有一个可用的包。

NPM Package
Github Repo

var queryString = require('query-string');
var parsed = queryString.parse('?a=2&b=3&order_by=old_data');  // location.search

// Conditionally modify parameter value
if (parsed.order_by) {
  parsed.order_by = 'data';
}

// Inject modified parameter back into query string
const newQueryString = queryString.stringify(parsed);
//=> a=2&b=3&order_by=data

关于javascript - 如何使用 Javascript/jQuery 在 URL 中添加或替换查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42376287/

相关文章:

javascript - CoffeeScript 中的动态类生成

javascript - 为什么 jQuery 事件在外部就绪函数时不触发,即使在文档准备好之后?

javascript - 将删除函数与tinymce textarea一起使用时出错

jquery - Bootstrap 3 自定义多级菜单无法正常运行

c - 检测 RE2C 中的 IP 地址

javascript - "display: none"div 中的图像未加载 onpageload

javascript - jsrouting-bundle symfony 错误

javascript - 正则表达式两个或三个数字,因此只允许一个或两个字母

javascript - 正则表达式验证 - Javascript 中的初始化错误

regex - Preg-match 返回错误值?