问题描述
我的目标是能够管理和修改URL中的查询参数。 我决定尝试
页面首次加载时,它已经具有一个参数: http://localhost:3000/football?game=This-Game
。
我要做的是附加诸如http://localhost:3000/football?game=This-Game&foo=bar&fiz=buzz
。
在保留参数的第一部分的同时,我不太清楚如何使用URI.js做到这一点。 我想我可能不得不在页面加载时将第一个参数拉入一个对象,然后将其重置,但是希望有一种更简单的方法。
在尝试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楼
您可以使用方法更新现有参数并添加新参数。
从链接:
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"