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

新手上路,请多包涵

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

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

我需要获得 c 的全部价值。我试图阅读 URL,但我只有 m2 。如何使用 JavaScript 做到这一点?

原文由 joe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 521
1 个回答

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

在( 现代)浏览器中运行的代码可以使用 URL 对象Web API )。 URL 也由 Node.js 实现:

 // You can get url_string from window.location.href if you want to work with
 // the URL of the current page
 var url_string = "http://www.example.com/t.html?a=1&b=3&c=m2-m3-m4-m5";
 var url = new URL(url_string);
 var c = url.searchParams.get("c");
 console.log(c);

对于较旧的浏览器(包括 Internet Explorer),您可以使用 这个 polyfill

您还可以将一个用于 URLSearchParams 并提取查询字符串以使用 window.location.search.substring(1) 传递给它。


您还可以使用早于 URL 的此答案的原始版本中的代码。上面的 polyfill 是健壮的并且经过了很好的测试,不过我强烈推荐它。

您可以访问 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.shift());
 var value = decodeURIComponent(pair.join("="));
 // If first entry with this name
 if (typeof query_string[key] === "undefined") {
 query_string[key] = value;
 // If second entry with this name
 } else if (typeof query_string[key] === "string") {
 var arr = [query_string[key], value];
 query_string[key] = arr;
 // If third or later entry with this name
 } else {
 query_string[key].push(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);

原文由 Quentin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题