代码之家  ›  专栏  ›  技术社区  ›  Pradyut Bhattacharya

使用jquery插件更改url或查询字符串而不重新加载

  •  2
  • Pradyut Bhattacharya  · 技术社区  · 14 年前

    我想在不重新加载页面的情况下更改URL或查询字符串…

    我用过 QUERY STRING OBJECT jquery插件

    我有这个 example page 在其中,当单击相册时,它应该更改查询字符串…

    现在我可以使用代码更改url

    window.location.href =  $.query.set('aid', a_id);
    

    但是它可以用来重新加载页面…

    这个代码没有任何作用

     var newUrl =  $.query.set('aid', a_id);
    

    如果不重新加载页面…

    我怎么能不重新加载页面…

    谢谢
    普拉迪特
    印度

    4 回复  |  直到 11 年前
        1
  •  7
  •   unwind    14 年前

    如果不重新加载页面,则无法更改查询字符串。

        2
  •  3
  •   Pradyut Bhattacharya    14 年前

    我有办法…

    更改#

    您可以使用javascript获取和设置查询字符串

    location.hash = 'something=anything'
    

    谢谢
    普拉迪特
    印度

        3
  •  2
  •   Fabio Nolasco    11 年前

    如果您只想更改哈希值,那么您批准的解决方案可能可以正常工作。但是,要修改查询,需要使用history.pushState。不过,它只适用于带有html5历史api的web浏览器。

    if (history.pushState) {
        var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + '?myNewUrlQuery=1';
        window.history.pushState({path:newurl},'',newurl);
    }
    

    我测试过了,效果很好。它不会重新加载页面,但只允许您更改url查询。您将无法更改协议或主机值。

    有关详细信息:

    http://diveintohtml5.info/history.html

    https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

        4
  •  0
  •   Cuga    14 年前

    您可能会发现另一个有用的解决方案是jquery的bbq插件。下面是一个例子: http://benalman.com/code/projects/jquery-bbq/examples/fragment-basic/