标题:[实践OK]一个JavaScript函数把URL参数解析成Json对象 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Sun, 13 Aug 2017 19:39:28 +0000 作者:jackxiang 地址:http://jackxiang.com/post/9408/ 内容: 问题:请编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象。 function parseQueryString(uri) { var obj = {}; var keyvalue = []; var key = '', value = ''; var paraString= new Array(); paraString = uri.split('&'); for (var i in paraString) { keyvalue = paraString[i].split('='); key = keyvalue[0]; value = keyvalue[1]; obj[key] = value; } return obj; } var b = parseQueryString("a=b&c=d"); document.write(b.a); document.write(b.c); 运行结果: a c eg:var obj=parseQueryString(url); 创建对象的三种形式: 一: var Person=new Object(); Person.name="Sun"; Person.age=24; 二: var Person=new Object(); Person["name"]="Sun"; Person["age"]=24; 三: 对象字面量表达式 var Person={ name: "Sun", age: 24 } PS: 1、在这个例子中,比较适合使用第二种形式,向obj中添加元素 2、split("&") , 如果url只有一个参数的时候,没有“&”的时候,也不会报错,只会返回array[0] function parseQueryString(url) { var obj = {}; var keyvalue = []; var key = "", value = ""; var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&"); for (var i in paraString) { keyvalue = paraString[i].split("="); key = keyvalue[0]; value = keyvalue[1]; obj[key] = value; } return obj; } 以下介绍了JS根据key值获取URL中的参数值及把URL的参数转换成json对象,js通过两种方式获取url传递参数,代码 示例一: //把url的参数部分转化成json对象 parseQueryString: function(url) { var reg_url = /^[^/?]+/ ? ([/w/W] + ) $ / , reg_para = /([^&=]+)=([/w/W]*?)(&|$|#)/g, arr_url = reg_url.exec(url), ret = {}; if (arr_url && arr_url[1]) { var str_para = arr_url[1], result; while ((result = reg_para.exec(str_para)) != null) { ret[result[1]] = result[2]; } } return ret; } // 通过key获取url中的参数值 getQueryString: function(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } 示例二: js通过两种方法获取url传递参数: js获取url传递参数方法一: 这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET 函数: function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("&"); for (var i = 0; i < strs.length; i++) { theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]); } } return theRequest; } 然后我们通过调用此函数获取对应参数值: var Request = new Object(); Request = GetRequest(); var 参数1,参数2,参数3,参数N; 参数1 = Request[''参数1'']; 参数2 = Request[''参数2'']; 参数3 = Request[''参数3'']; 参数N = Request[''参数N'']; 以此获取url串中所带的同名参数 js获取url传递参数方法二 正则分析法: function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return (r[2]); return null; } alert(GetQueryString("参数名1")); alert(GetQueryString("参数名2")); alert(GetQueryString("参数名3")); 其他参数获取介绍: //设置或获取对象指定的文件名或路径。 alert(window.location.pathname); //设置或获取整个 URL 为字符串。 alert(window.location.href); //设置或获取与 URL 关联的端口号码。 alert(window.location.port); //设置或获取 URL 的协议部分。 alert(window.location.protocol); //设置或获取 href 属性中在井号“#”后面的分段。 alert(window.location.hash); //设置或获取 location 或 URL 的 hostname 和 port 号码。 alert(window.location.host); //设置或获取 href 属性中跟在问号后面的部分。 alert(window.location.search); From:https://www.w3cschool.cn/json/1koy1piy.html Generated by Jackxiang's Bo-blog 2.1.1 Release