使用URI.js管理查询

时间:2015-07-17 13:17:31

标签: javascript url uri pushstate

我的目标是能够管理和修改URL中的查询参数。我决定给URI.js一个机会。

首次加载页面时,它已经有一个参数:http://localhost:3000/football?game=This-Game。我想要做的是添加http://localhost:3000/football?game=This-Game&foo=bar&fiz=buzz等参数。

我无法弄清楚如何使用URI.js,同时保留param的第一部分。我想我可能不得不在页面加载时将第一个参数拉到一个对象中,然后重置它,但希望有一个更简单的方法。

在尝试使用URI.js之前,我正在使用pushState并抓住当前的window.location 加上我想要添加的任何参数,形成一个字符串,并将其推送到URL

if (typeof (history.pushState) != 'undefined') { var obj = { Title: title, Url: url }; history.pushState(obj, obj.Title, obj.Url); }

我还想使用pushState(因为我认为这是唯一的方法,虽然URI.js文档并没有多谈它),但基本上有一个参数对象,我可以随时添加,删除等,它会自动更新URL。

我目前正在使用此代码,但结果为http://localhost:300/game=ISC-World-Tournament&foo=bar(缺少第一个参数)。

var url = new URI;
url.addQuery({foo: 'bar'})

if (typeof (history.pushState) != 'undefined') {
    var obj = { Title: 'test', Url: url._parts.query };
    history.pushState(obj, obj.Title, obj.Url);
}

总而言之,我认为我走在正确的轨道上,但希望有一种简单的方法来管理参数。

1 个答案:

答案 0 :(得分:0)

您可以使用setQuery方法更新现有参数并添加新参数。

从链接:

var uri = new URI("?hello=world");
uri.setQuery("hello", "mars"); // returns the URI instance for chaining
// uri == "?hello=mars"

uri.setQuery({ foo: "bar", goodbye : ["world", "mars"] });
// uri == "?hello=mars&foo=bar&goodbye=world&goodbye=mars"