【问题标题】:Modify a parameter in url with page reload using js/jquery使用 js/jquery 修改 url 中的参数并重新加载页面
【发布时间】:2016-12-10 02:49:39
【问题描述】:

我有一个类似result?graphType=default&product=xyzzzz&shop=11的网址

我只想在用户单击按钮时更改 graphType 的值。 单击该按钮时,我将一些值存储在变量中,并且我想在我的 url 中将 graphType=default 替换为 graphType=my_new_value 而无需重新加载。 我不明白如何在 graphType= 处拆分 url。 即使我能够在 graphType 处拆分为 url,我如何用我的变量替换默认值(也可以是其他值,取决于用户选项)

【问题讨论】:

  • 你可以从window.location.search开始返回任何url参数...
  • url without reload :只要您更改 URL;浏览器将重新加载它。它是您要更改并因此重新加载的 URL 的一部分。它不在你的手中。

标签: javascript jquery html


【解决方案1】:

我觉得你的解决方案应该是这样的

$(document).ready(function(){
    var queries = {};
    $.each(document.location.search.substr(1).split('&'), function(c,q){
        var i = q.split('=');
        queries[i[0].toString()] = unescape(i[1].toString()); // change escaped characters in actual format
    });

    // modify your parameter value and reload page using below two lines
    queries['your key']='your value';

    document.location.href="?"+$.param(queries); // it reload page
    //OR
    history.pushState({}, '', "?"+$.param(queries)); // it change url but not reload page
});

【讨论】:

  • 非常感谢。正是我想要的
  • 很高兴收到您的来信.. 不要忘记放弃投票并标记为正确.. 我非常喜欢堆字:D
  • 请也投上一票,现在你已经有足够的 15 岁以上的会员了,谢谢
  • 感谢您的好回答。就一个问题。是否可以使浏览器在历史记录中以推送状态工作?当我单击浏览器的历史返回按钮时,推送状态不起作用......只有在刷新后,这些状态才会应用于页面内容。无论如何,非常感谢!
  • @TaiJinYuan ,我认为你需要使用 pop 方法来返回历史,希望它会起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
相关资源
最近更新 更多