希望您能找到以下有助于将查询字符串转换为json对象的函数
var queryStringToJSON = function (url) {
if (url === '')
return '';
var pairs = (url || location.search).slice(1).split('&');
var result = {};
for (var idx in pairs) {
var pair = pairs[idx].split('=');
if (!!pair[0])
result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
}
return result;
}
用法:
获取当前的Windows查询字符串
var result = queryStringToJSON() // without any parameter
从自定义查询字符串中获取json:
var result = queryStringToJSON('?name=prem&age=30&HEIGHT=5.8')
输出 {name:"prem", age:"30", height:"5.8"} //All keys are converted into small letters
要将其转换回网址,您可以使用 jQuery param 方法
$.param(result)
要操纵您的查询字符串,您可以在JavaScript中简单地使用标准对象操作并再次使用$ .param方法
result.age=35;
delete result['name'];
答案 0 :(得分:1)
正常工作,但是如果您使用了url || location.search
,那么您应该删除if(url === '') return ''
或者它应该是,
var queryStringToJSON = function (url) {
url = url || location.search;// url or location.search
if (url === '')
return '';// return if url and location.search not found
// your remainig code
}
答案 1 :(得分:1)
或者......而不是:
for (var idx in pairs) {
var pair = pairs[idx].split('=');
if (!!pair[0])
result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
}
尝试:
result = pairs.reduce(function(a,b) {
var pair = b.split("=");
a[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
return a;
},{});
工作方式相同,但使用reduce()
作为本机javascript函数,可能更快。