我应该使用什么JavaScript库来解析URL参数?

时间:2009-09-01 14:06:11

标签: javascript

如何解析JavaScript中的URL参数? (这些是我通常称之为GET参数或CGI参数的参数,但在这种情况下,页面基本上是提交给自己,而不是服务器,所以没有GET请求,绝对没有CGI程序。)

我已经在网上看到了一些我可以复制的例程,但我不知道它们有多强大。我已经习惯了其他语言,比如Perl和Java,我可以依赖一个经过严格测试和强大的库,我知道它将处理标准中数以百万计的小边缘情况。我想在这里一样,而不仅仅是剪切和粘贴一个例子。

9 个答案:

答案 0 :(得分:7)

答案 1 :(得分:1)

以下是执行此任务的两个简单功能:http://adamv.com/dev/javascript/querystring

以下是API参考的示例:

var qs = new Querystring();

// Parse a given querystring
var qs2 = new Querystring("name1=value1&name2=value2");

var v1 = qs2.get("name1");
var v3 = qs2.get("name3", "default value");

答案 2 :(得分:1)

如果是“提交给自己”,你需要做GET参数吗?

但如果你这样做,大多数浏览器现在都有decodeURIComponent功能,可以处理各个参数;你的工作就是将它们拆分为& (String#split会做得很好)。如果你想要一个库,jQuery和Prototype都可以很好地使用和测试。

答案 3 :(得分:1)

我找到的最好的方法就是自己完成,并将params汇集到全局键/值对象中。

获得quer params很简单......

只需要几个.split()的

var myquery = thewholeurl.split("?")[1]; //will get the whole querystring with the ?

然后你可以做一个

myparams = myquery.split(“&”)

然后你可以做

for each param in myparams
{
temp = param.split("=");

mykeys.push(temp[0]);
myvalues.push(temp[1]);

OR

myObject[temp[0]] = temp[1];
}

这只是风格问题。

这不是完美的代码,只是伪造的东西给你的想法。

答案 4 :(得分:1)

我使用这里提供的parseUri库: http://stevenlevithan.com/demo/parseuri/js/

它可以让你完全按照你的要求去做:

var uri = 'http://google.com/?q=stackoverflow';
var q = uri.queryKey['q'];
// q = 'stackoverflow'

到目前为止我已经使用了一段时间并且没有任何问题。

答案 5 :(得分:1)

我发现这对于简单的url解析,修改url很有用(比如添加新的查询参数):https://github.com/derek-watson/jsUri

答案 6 :(得分:0)

我认为这个库可以很好地工作,它是独立的,因此您可以将它与JQuery或YAHOO或Dojo一起使用,另一个优点是它可以很好地记录。

http://www.openjsan.org/doc/t/th/theory/HTTP/Query/0.03/lib/HTTP/Query.html

在这种情况下,您可以使用HTTP.Query为您完成所有工作。它只有1.2 KB压缩,所以如果你愿意,你甚至可以将它包含在一个更大的库中。

答案 7 :(得分:0)

我推荐query-string图书馆

安装:

npm install query-string

用法:

import queryString from 'query-string';

console.log(location.search);
//=> '?foo=bar'

const parsed = queryString.parse(location.search);
console.log(parsed);
//=> {foo: 'bar'}

parsed.foo = 'unicorn';
parsed.ilike = 'pizza';

const stringified = queryString.stringify(parsed);
//=> 'foo=unicorn&ilike=pizza'

location.search = stringified;
// note that `location.search` automatically prepends a question mark
console.log(location.search);
//=> '?foo=unicorn&ilike=pizza'

https://www.npmjs.com/package/query-string

答案 8 :(得分:-1)

Javascript没有内置的URL参数支持。

无论如何,location.search属性返回从问号('?')开始的当前页面URL的部分。

由此,您可以编写自己的参数解析器,也可以使用大多数常见Javascript框架中的一种,例如JQuery和类似的。