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

Dan*_*ira 77 javascript

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

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

Raf*_*ael 175

所有数据均可在

window.location.search
Run Code Online (Sandbox Code Playgroud)

你必须解析字符串,例如.

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

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

get('foo');
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,decodeURIComponent不会解码/全部/可能的URI转义.特别是"+"不会被解码为"".(我忘了它在哪个浏览器.也许FF?)规范要求它们只解码encodeUIRComponent编码的确切内容,并将""编码为"%20",因此"+"保持不变. (2认同)
  • @volocuga 与 PHP 不同,在 JavaScript 中处理 URL 是非常罕见的操作,因此浏览器供应商从未真正关注这些功能。 (2认同)

Kao*_*aos 36

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

var xyz = jQuery.url.param("param_in_url");
Run Code Online (Sandbox Code Playgroud)

检查源代码

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

  • 那么需要一个插件吗? (3认同)

Fab*_*ook 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
Run Code Online (Sandbox Code Playgroud)

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

function Request(name){
    return QueryString[name.toLowerCase()];
}
Run Code Online (Sandbox Code Playgroud)


小智 8

尝试下面的代码,它将帮助您从URL获取GET参数. 更多细节.

 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)
Run Code Online (Sandbox Code Playgroud)


Dan*_*Lew 5

您可以使用URL获取GET变量.特别是,window.location.search在"?"之后(包括)提供所有内容.您可以在此处阅读有关window.location的更多信息.


Gri*_*lay 5

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

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