我的目标是能够管理和修改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);
}
总而言之,我认为我走在正确的轨道上,但希望有一种简单的方法来管理参数。
答案 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"