【问题标题】:jquery.query-object plugin giving me problems when trying to replace a parameter in my URL's query stringjquery.query-object 插件在尝试替换 URL 的查询字符串中的参数时给我带来了问题
【发布时间】:2017-07-19 22:44:50
【问题描述】:

我正在使用 jQuery 1.12 并使用 thsi 插件 -- https://plugins.jquery.com/query-object/ 来帮助我在查询字符串中替换/添加一个参数,我目前通过调用逻辑来完成

new_url = $.query.set("order_by", data_val).toString() 
window.location.href = new_url

但是,这种逻辑将我的查询字符串搞砸了,因为我没有触及到的参数。例如,如果我有以下网址

http://myurl?utf8=✓&first_name=&last_name=&search=Token&x=0&y=0

调用上述逻辑将URL变成

?utf8=%E2%9C%93&first_name&last_name&search=Token&x=0&y=0&order_by=name

请注意,“first_name=”已简化为“first_name”。我应该使用 anotehr jQuery 插件吗?基本上我想替换/添加一个参数而不触及其他参数。

【问题讨论】:

  • 其实是标准化参数。
  • 好的,但这会破坏我服务器端的参数处理
  • 在下面查看我的答案

标签: jquery url replace parameters query-string


【解决方案1】:

除了将新参数附加到 URL 之外,该插件还在序列化参数。如果你不想要这种行为,你可以尝试下面的代码来附加新参数

var url = "http://myurl?utf8=✓&first_name=&last_name=&search=Token&x=0&y=0";

var addParam = function(url, params) {
  for (var i in params) {
    var char = url.indexOf('?') > -1 ? '&' : '?';
    url += char + i + '=' + params[i];
  }
  return url;
}

console.log(addParam(url, {
  order: 'whatever',
  test: 1
}));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2013-08-18
    相关资源
    最近更新 更多