Javascript使用jQuery将查询字符串转换为JSON并返回查询字符串

希望您能找到以下有助于将查询字符串转换为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

要将其转换回url,您可以使用jQuery param方法

 $.param(result) 

要操纵查询字符串,您可以在JavaScript中简单地使用标准对象操作,并再次使用$ .param方法

 result.age=35; delete result['name']; 

工作,但如果你使用url || location.search 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 } 

或者……而不是:

 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函数,可能更快。