当前位置: 代码迷 >> JavaScript >> 使用URI.js管理查询
  详细解决方案

使用URI.js管理查询

热度:121   发布时间:2023-06-12 14:37:28.0

我的目标是能够管理和修改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);
}

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

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

从链接:

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"
  相关解决方案