如何使用Javascript读取get请求?

时间:2010-11-17 20:53:25

标签: javascript html arguments hyperlink

所以我有一个名为A.html的html页面,它是从B.html这样调用的:A.html?varString="bla-bla-bla"将args发送给JS是否正确?如何从JS解析args?

(不使用任何框架,如Jquery,在IE6,FireFox 3中工作)

5 个答案:

答案 0 :(得分:7)

使用location.search

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。