栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用Javascript解析URL查询参数?[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用Javascript解析URL查询参数?[重复]

您可以放心使用

Array.forEach
。如@ricosrealm所建议,
depreURIComponent
在此函数中使用了它。

function getJsonFromUrl(url) {  if(!url) url = location.search;  var query = url.substr(1);  var result = {};  query.split("&").forEach(function(part) {    var item = part.split("=");    result[item[0]] = depreURIComponent(item[1]);  });  return result;}

实际上不是那么简单 ,请参阅注释中的同行评审,尤其是:

  • 基于哈希的路由(@cmfolio)
  • 数组参数(@ user2368055)
  • 正确使用解码
    =
    URIComponent 和未编码的(@AndrewF)
  • 未编码
    +
    (由我添加)

也许这应该去prereview SE,但这是更安全和无正则表达式的代码:

function getJsonFromUrl(url) {  if(!url) url = location.href;  var question = url.indexOf("?");  var hash = url.indexOf("#");  if(hash==-1 && question==-1) return {};  if(hash==-1) hash = url.length;  var query = question==-1 || hash==question+1 ? url.substring(hash) :   url.substring(question+1,hash);  var result = {};  query.split("&").forEach(function(part) {    if(!part) return;    part = part.split("+").join(" "); // replace every + with space, regexp-free version    var eq = part.indexOf("=");    var key = eq>-1 ? part.substr(0,eq) : part;    var val = eq>-1 ? depreURIComponent(part.substr(eq+1)) : "";    var from = key.indexOf("[");    if(from==-1) result[depreURIComponent(key)] = val;    else {      var to = key.indexOf("]",from);      var index = depreURIComponent(key.substring(from+1,to));      key = depreURIComponent(key.substring(0,from));      if(!result[key]) result[key] = [];      if(!index) result[key].push(val);      else result[key][index] = val;    }  });  return result;}

此功能甚至可以解析URL

var url = "?foo%20e[]=a%20a&foo+e[%5Bx%5D]=b&foo e[]=c";// {"foo e": ["a a",  "c",  "[x]":"b"]}var obj = getJsonFromUrl(url)["foo e"];for(var key in obj) { // Array.forEach would skip string keys here  console.log(key,":",obj[key]);}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/442201.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号