js将地址参数转成json对象

1. 所谓的url参数,也就是地址栏中“?”之后的内容

2. 例子 + 分析

(1)获取地址栏“?”之后的内容

// 直接获取的(获取?之后的内容)
var search = window.location.search;  // 例如:"?userName=cyq&age=24&sex=f"
// 写死的地址
var href = "http://www.cyqzy.com?userName=cyq&age=24&sex=f";
var ksbz = href.indexOf("?");
// 截取字符串的三种方式,返回结果:userName=cyq&age=24&sex=f
var hrefStr = href.substr(ksbz+1);  // 参数(start,length)
var hrefStr2 = href.substring(ksbz+1);  // 参数(start,end),返回结果不包括end
var hrefStr3 = href.slice(ksbz+1);  // 参数(start,end), 返回结果不包括end

(2)方法一(返回json对象)

var splitStr = hrefStr.split("&");  // 返回结果:["userName=cyq", "age=24", "sex=f"]
var urlObj = {}  // 等价于 var urlObj = new Object()
for(var i = 0; i < splitStr.length; i++){
  urlObj[splitStr[i].split("=")[0]] = splitStr[i].split("=")[1];
}
console.log(urlObj) // 返回结果:Object {userName: "cyq", age: "24", sex: "f"}

(3)方法二(获取参数值)

var name = "age";  // name指的是要取的属性名称,比如username或者age或者sex
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var res = hrefStr.match(reg);
if (res != null){
  console.log(res);//["&age=24&", "&", "24", "&", index: 12, input: "userName=cyq&age=24&sex=f"]
  console.log(res[2]); // 24
}


猜你喜欢

转载自blog.csdn.net/cyqzy/article/details/80049315