一尘不染

从“GET”参数(JavaScript)中获取值

javascript

我有一个带有一些 GET 参数的 URL,如下所示:

www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 

我需要获得c. 我试图阅读 URL,但我只得到m2. 如何使用 JavaScript 做到这一点?


阅读 147

收藏
2022-02-21

共1个答案

一尘不染

avaScript本身没有内置任何东西来处理查询字符串参数。

在(现代)浏览器中运行的代码可以使用该URL对象(这是浏览器向 JS 提供的 API 的一部分):

var url_string = "http://www.example.com/t.html?a=1&b=3&c=m2-m3-m4-m5"; //window.location.href
var url = new URL(url_string);
var c = url.searchParams.get("c");
console.log(c);

对于较旧的浏览器(包括 Internet Explorer),您可以使用此 polyfill或此答案的原始版本中的代码,该版本早于URL

您可以访问location.search,这将使您从?字符到 URL 的末尾或片段标识符 (#foo) 的开头,以先到者为准。

然后你可以用这个来解析它:

function parse_query_string(query) {
  var vars = query.split("&");
  var query_string = {};
  for (var i = 0; i < vars.length; i++) {
    var pair = vars[i].split("=");
    var key = decodeURIComponent(pair[0]);
    var value = decodeURIComponent(pair[1]);
    // If first entry with this name
    if (typeof query_string[key] === "undefined") {
      query_string[key] = decodeURIComponent(value);
      // If second entry with this name
    } else if (typeof query_string[key] === "string") {
      var arr = [query_string[key], decodeURIComponent(value)];
      query_string[key] = arr;
      // If third or later entry with this name
    } else {
      query_string[key].push(decodeURIComponent(value));
    }
  }
  return query_string;
}

var query_string = "a=1&b=3&c=m2-m3-m4-m5";
var parsed_qs = parse_query_string(query_string);
console.log(parsed_qs.c);

您可以从当前页面的 URL 中获取查询字符串:

var query = window.location.search.substring(1);
var qs = parse_query_string(query);
2022-02-21