Javascript преобразует строку запроса в JSON с помощью jQuery и обратно в строку запроса
Надеюсь, вы найдете следующую функцию, полезную для преобразования строки запроса в объект 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'];
Ответы
Ответ 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
}
Ответ 2
Альтернативно... Вместо:
for (var idx in pairs) {
var pair = pairs[idx].split('=');
if (!!pair[0])
result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
}
Try:
result = pairs.reduce(function(a,b) {
var pair = b.split("=");
a[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
return a;
},{});
Выполняет то же самое, но использует reduce()
, который является встроенной функцией javascript, возможно, быстрее.