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