如何在JavaScript中解析URL参数?(这些参数通常被称为GET参数或CGI参数,但在这种情况下,页面基本上是向自身提交而不是服务器,因此没有GET请求,也绝对没有CGI程序。)
我在网上看到了很多可以复制的例程,但我不知道它们有多健壮。我习惯于像Perl和Java这样的其他语言,我可以依靠经过严格测试和强大的库来处理标准中的数百万个边缘情况。我希望在这里也能有相同的事情,而不仅仅是剪切和粘贴一个示例。
如何在JavaScript中解析URL参数?(这些参数通常被称为GET参数或CGI参数,但在这种情况下,页面基本上是向自身提交而不是服务器,因此没有GET请求,也绝对没有CGI程序。)
我在网上看到了很多可以复制的例程,但我不知道它们有多健壮。我习惯于像Perl和Java这样的其他语言,我可以依靠经过严格测试和强大的库来处理标准中的数百万个边缘情况。我希望在这里也能有相同的事情,而不仅仅是剪切和粘贴一个示例。
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");
var uri = 'http://google.com/?q=stackoverflow';
var q = uri.queryKey['q'];
// q = 'stackoverflow'
我已经使用它一段时间了,到目前为止还没有遇到任何问题。
如果是“提交给自己”,你需要使用GET参数吗?
但是,如果你需要使用GET参数,现在大多数浏览器都有decodeURIComponent
函数来处理单个参数;你的任务是在&符号上分割它们(String#split
可以很好地完成这项工作)。如果你想要一个库,jQuery和Prototype都被广泛使用和测试过。
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];
}
这只是风格问题。
这不是完美的代码,只是伪代码,让你有个想法。
decodeURIComponent
运行。 - T.J. Crowder我推荐使用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'
我认为这个库非常适用,它是独立的,因此您可以将其与JQuery、YAHOO或Dojo一起使用,另一个优点是它有相当完善的文档。
http://www.openjsan.org/doc/t/th/theory/HTTP/Query/0.03/lib/HTTP/Query.html
在这种情况下,您可以使用HTTP.Query来为您完成所有工作。它只有1.2 KB压缩,因此如果需要,您甚至可以将其包含在更大的库中。
Javascript没有内置的URL参数支持。
不过,location.search
属性返回当前页面URL从问号(“?”)开始的部分。
通过这个,你可以编写自己的参数解析器,或者你可以利用大多数常见Javascript框架中提供的其中之一,比如JQuery和类似的框架。