一个JavaScript函数把URL参数解析成Json对象

使用JS函数将URL参数解析为JSON对象

问题:请编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象。

例如: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只有一个参数的时候,没有“&”的时候,也不会报错,只会返回array0

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