Сериализовать объект для строки запроса в JavaScript/jQuery
Я пытаюсь найти информацию о том, как сериализовать объект в формате строки запроса, но все мои запросы тонут в результатах о том, как идти другим путем (строка/форма/что-то в JSON).
У меня
{ one: 'first', two: 'second' }
и я хочу
?one=first&two=second
Есть ли хороший способ сделать это? Я не против плагинов или whatnots - если код, который я нахожу, не является плагином, я, вероятно, переписал бы его одному...
Ответы
Ответ 1
Вы хотите $.param()
: http://api.jquery.com/jQuery.param/
В частности, вы хотите:
var data = { one: 'first', two: 'second' };
var result = $.param(data);
Когда вы получите что-то вроде этого:
{a: 1, b : 23, c : "[email protected]#st"}
$.param
вернет это:
a=1&b=23&c=te!%40%23st
Ответ 2
Для быстрой функции без JQuery...
function jsonToQueryString(json) {
return '?' +
Object.keys(json).map(function(key) {
return encodeURIComponent(key) + '=' +
encodeURIComponent(json[key]);
}).join('&');
}
Обратите внимание, что это не обрабатывает массивы или вложенные объекты.
Ответ 3
Другим вариантом может быть node -querystring.
Он доступен как в npm
, так и в bower
, поэтому я его использовал.
Ответ 4
В качестве альтернативы YUI имеет http://yuilibrary.com/yui/docs/api/classes/QueryString.html#method_stringify.
Например:
var data = { one: 'first', two: 'second' };
var result = Y.QueryString.stringify(data);