如何在JavaScript中获取“GET”请求参数?

时间:2009-05-06 18:32:36

标签: javascript

如何从JavaScript中的请求中获取“GET”变量?

是jQuery还是YUI!内置了这个功能吗?

12 个答案:

答案 0 :(得分:170)

所有数据均可在

下找到
window.location.search

你必须解析字符串,例如

function get(name){
   if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
      return decodeURIComponent(name[1]);
}

只需使用GET变量名作为参数调用该函数,例如

get('foo');

如果变量没有值或不存在,则此函数将返回变量值或undefined

答案 1 :(得分:36)

你可以使用jquery.url我喜欢这样:

var xyz = jQuery.url.param("param_in_url");

Check the source code

更新来源:https://github.com/allmarkedup/jQuery-URL-Parser

答案 2 :(得分:12)

如果你想要一个包含所有请求的对象

,那就把我的两分钱
function getRequests() {
    var s1 = location.search.substring(1, location.search.length).split('&'),
        r = {}, s2, i;
    for (i = 0; i < s1.length; i += 1) {
        s2 = s1[i].split('=');
        r[decodeURIComponent(s2[0]).toLowerCase()] = decodeURIComponent(s2[1]);
    }
    return r;
};

var QueryString = getRequests();

//if url === "index.html?test1=t1&test2=t2&test3=t3"
console.log(QueryString["test1"]); //logs t1
console.log(QueryString["test2"]); //logs t2
console.log(QueryString["test3"]); //logs t3

注意,每个get参数的键设置为小写。所以,我做了一个帮手功能。所以现在它不区分大小写。

function Request(name){
    return QueryString[name.toLowerCase()];
}

答案 3 :(得分:7)

尝试以下代码,它将帮助您从url获取GET参数。 for more details.

 var url_string = window.location.href; // www.test.com?filename=test
    var url = new URL(url_string);
    var paramValue = url.searchParams.get("filename");
    alert(paramValue)

答案 4 :(得分:5)

您可以使用URL获取GET变量。特别是,window.location.search给出了'?'后的所有内容(包括)。您可以阅读有关window.location here的更多信息。

答案 5 :(得分:3)

今天我需要将页面的请求参数放到一个关联数组中,所以我把以下内容放在一起,help my加上一点friends。它还处理没有= true的参数。

举个例子:

// URL: http://www.example.com/test.php?abc=123&def&xyz=&something%20else

var _GET = (function() {
    var _get = {};
    var re = /[?&]([^=&]+)(=?)([^&]*)/g;
    while (m = re.exec(location.search))
        _get[decodeURIComponent(m[1])] = (m[2] == '=' ? decodeURIComponent(m[3]) : true);
    return _get;
})();

console.log(_GET);
> Object {abc: "123", def: true, xyz: "", something else: true}
console.log(_GET['something else']);
> true
console.log(_GET.abc);
> 123

答案 6 :(得分:2)

您可以解析当前页面的URL以获取GET参数。可以使用location.href找到该网址。

答案 7 :(得分:2)

如果你已经使用了jquery,那么有一个jquery插件可以处理这个:

http://plugins.jquery.com/project/query-object

答案 8 :(得分:1)

与其他答案不同,UrlSearchParams对象可以避免使用正则表达式或其他字符串操作,并且在大多数现代浏览器中可用:

var queryString = location.search
let params = new URLSearchParams(queryString)
// example of retrieving 'id' parameter
let id = parseInt(params.get("id"))
console.log(id)

答案 9 :(得分:0)

地图缩减解决方案:

var urlParams = location.search.split(/[?&]/).slice(1).map(function(paramPair) {
        return paramPair.split(/=(.+)?/).slice(0, 2);
    }).reduce(function (obj, pairArray) {            
        obj[pairArray[0]] = pairArray[1];
        return obj;
    }, {});

用法:

For url: http://example.com?one=1&two=2
console.log(urlParams.one) // 1
console.log(urlParams.two) // 2

答案 10 :(得分:0)

此处的函数按名称返回参数。通过微小的更改,您将能够返回基本网址,参数或锚点。

function getUrlParameter(name) {
    var urlOld          = window.location.href.split('?');
    urlOld[1]           = urlOld[1] || '';
    var urlBase         = urlOld[0];
    var urlQuery        = urlOld[1].split('#');
    urlQuery[1]         = urlQuery[1] || '';
    var parametersString = urlQuery[0].split('&');
    if (parametersString.length === 1 && parametersString[0] === '') {
        parametersString = [];
    }
    // console.log(parametersString);
    var anchor          = urlQuery[1] || '';

    var urlParameters = {};
    jQuery.each(parametersString, function (idx, parameterString) {
        paramName   = parameterString.split('=')[0];
        paramValue  = parameterString.split('=')[1];
        urlParameters[paramName] = paramValue;
    });
    return urlParameters[name];
}

答案 11 :(得分:0)

中为我工作

url:http://localhost:8080/#/?access_token=111

function get(name){
  const parts = window.location.href.split('?');
  if (parts.length > 1) {
    name = encodeURIComponent(name);
    const params = parts[1].split('&');
    const found = params.filter(el => (el.split('=')[0] === name) && el);
    if (found.length) return decodeURIComponent(found[0].split('=')[1]);
  }
}