所以我有一个名为A.html
的html页面,它是从B.html
这样调用的:A.html?varString="bla-bla-bla"
将args发送给JS是否正确?如何从JS解析args?
(不使用任何框架,如Jquery,在IE6,FireFox 3中工作)
答案 0 :(得分:7)
alert(location.search); // will display everything from the ? onwards
您可能希望将不同的变量与查询字符串分开,以便您可以按名称访问它们:
var request = {};
var pairs = location.search.substring(1).split('&');
for (var i = 0; i < pairs.length; i++) {
var pair = pairs[i].split('=');
request[pair[0]] = pair[1];
}
然后您可以像request['varString']
一样访问它,这将为您提供"bla-bla-bla"
。
答案 1 :(得分:7)
这是一个解析查询字符串的函数。传递参数名称,然后返回值。
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++)
{
var pair = vars[i].split("=");
if (pair[0] == variable)
{
return pair[1];
}
}
return -1; //not found
}
答案 2 :(得分:1)
大多数情况下,你想要处理在服务器端传递给你的页面的参数,但如果你有理由在客户端做到这一点,这里有一个我发现的小脚本:
function gup( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
我没有测试它,但我很确定它能够胜任这项工作。
只需使用它:gup('parameter')
,它将为您返回参数值。
答案 3 :(得分:0)
要通过JS解析查询字符串,您可以查看类似
的内容function getQueryValue(param) {
var queryStringArray = querystring && querystring.substring(1).split("&");
for (var i=0, length = queryStringArray.length; i < length; i++) {
var token = queryStringArray[i],
firstPart = token && token.substring(0, token.indexOf("="));
if (firstPart === param ) {
return token.substring(token.indexOf("=") + 1, token.length);
}
}
}
E.g。给定一个URL“http://domain.com.au?aaa=bbb,您可以将此fn称为getQeuryValue(”aaa“),然后您将获得”bbb“
我将此代码上传到Gist(修改为符合模块模式的位)。
答案 4 :(得分:0)
感谢新的URLSearchParams
界面,它变得更容易:
var url = new URL("https://example.org/?foo=bar&foo2=bar2");
var params = url.searchParams;
// Access to a variable
console.log(params.get("foo"));
// Loop over params
for (var key of params.keys()) {
console.log(params.get(key));
}
您应该检查Mozilla Developer Network浏览器兼容性,因为它是新的API。