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

IT技术 javascript
2021-01-26 08:06:46

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

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

6个回答

2021 年 6 月更新:

今天的浏览器具有用于处理 URL ( URL ) 和查询字符串 ( URLSearchParams ) 的内置 API ,这些应该是首选,除非您需要支持一些旧浏览器或 Opera mini(浏览器支持)。

原来的:

所有数据都可以在

window.location.search

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

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

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

get('foo');

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

出色地回答了拉斐尔 ;)
2021-03-29 08:06:46
@Daniel Silveira:是的,它可以/应该解码值(并对名称进行编码)。稍后将编辑我的帖子
2021-03-31 08:06:46
@volocuga 与 PHP 不同,在 JavaScript 中处理 URL 是非常罕见的操作,因此浏览器供应商从未真正关注这些功能。
2021-03-31 08:06:46
这就是我喜欢 PHP 的原因
2021-04-07 08:06:46
请注意, decodeURIComponent 不会解码 /all/ 可能的 URI 转义。特别是“+”不会被解码为“”。(我忘记了这是在哪个浏览器中。FF,也许?)规范要求他们只对 encodeUIRComponent 编码的内容进行准确解码,并且它将“”编码为“%20”,因此“+”被留下。
2021-04-09 08:06:46

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

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

检查源代码

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

所以需要插件吗?
2021-03-13 08:06:46
@Adam 看起来是这样。我认为这是更新后的 URL:github.com/allmarkedup/jQuery-URL-Parser谷歌搜索 Mark Perkins jquery.url 导致我更新。如果您需要,我有我发布此答案时的来源。
2021-03-14 08:06:46
很好的答案,但您的链接已失效
2021-04-02 08:06:46
var xyz = jQuery.url().param("param_in_url");jQuery.url()给出当前页面 URL的正确语法请进行更正。
2021-04-10 08:06:46

试试下面的代码,它会帮助你从 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)
不支持带有“#”符号的网址,因此我们必须将其删除。试试这个: var url_string = window.location.href; // www.test.com?filename=test var url = new URL(url_string.replace("#/","")); var paramValue = url.searchParams.get("access_token"); 警报(参数值)
2021-03-22 08:06:46
由于 location.hash 部分,在示例localhost:8080/#/?access_token=111 中不起作用如果出现“#”符号 location.search 为空
2021-04-05 08:06:46
Internet Explorer 不支持
2021-04-10 08:06:46

只是把我的两分钱放进去,如果你想要一个包含所有请求的对象

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()];
}
真的很喜欢这个方法。+1
2021-03-14 08:06:46

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