Знаете ли вы быстрый и простой способ кодирования объекта Javascript в объект, string
который я могу передать с помощью GET
запроса?
Нет jQuery
, никаких других фреймворков - просто обычный Javascript :)
javascript
query-string
urlencode
napolux
источник
источник
URLSearchParams
теперь поддерживают ...Ответы:
нравится?
Редактировать: этот также преобразует рекурсивные объекты (используя нотацию php «массив» для строки запроса)
источник
JQuery имеет функцию для этого,
jQuery.param()
если вы уже используете ее, вы можете использовать это: http://api.jquery.com/jquery.param/пример:
str
теперь содержитwidth=1680&height=1050
источник
var a = []; a[5] = 'foo'; jQuery.param({ parameters: a });
Результаты в"parameters[]=¶meters[]=¶meters[]=¶meters[]=¶meters[]=¶meters[]=foo"
. Что, хотя и правильно, может не соответствовать вашим ожиданиям.Просто используйте
URLSearchParams
Это работает во всех текущих браузерахисточник
let j = { m: 5, n: { k: 1 } }; new URLSearchParams(j).toString(); // result "m=5&n=%5Bobject+Object%5D"
stringify
использовать вложенные объекты, прежде чем сможетеURLSearchParams
Редактировать: мне нравится этот однострочный, но я держу пари, что это будет более популярный ответ, если он будет соответствовать принятому ответу семантически:
источник
Object.keys(obj).map(k => k + '=' + encodeURIComponent(obj[k])).join('&')
Object.keys
доступно только в IE> = 9Object.keys(obj).map(k => `${k}=${encodeURIComponent(obj[k])}`).join('&')
Object.entries(obj).map(e => e.map(ee => encodeURIComponent(ee)).join('=')).join('&');
Вот один вкладыш в ES6:
источник
export?actions[]=finance,create,edit
когда это должно быть,export?actions[]=finance&actions[]=create&actions[]=edit
как это ужасный стандарт.actions[]
это нотация PHP;action
Вместо этого Django использует множественное число (без[]
суффикса); некоторым другим ORM / CMS требуются разделенные запятыми списки и т. д. Итак, «если это не простые строки, сначала убедитесь, что вы знаете, чего хочет ваш сервер».С Node.js v6.6.3
Ссылка: https://nodejs.org/api/querystring.html
источник
Я предлагаю использовать
URLSearchParams
интерфейс:Или, передав поисковый объект в конструктор следующим образом:
источник
Небольшая поправка к принятому решению пользователя 187291:
Проверка hasOwnProperty для объекта делает JSLint / JSHint счастливым и предотвращает случайную сериализацию методов объекта или других вещей, если объект является чем-то иным, кроме простого словаря. См. Абзац с инструкциями на этой странице: http://javascript.crockford.com/code.html
источник
Ну, все, кажется, ставят здесь свои строки, так что вот мое:
источник
Вам нужно отправить произвольные объекты? Если это так, GET - плохая идея, поскольку существуют ограничения на длину URL-адресов, которые будут принимать пользовательские агенты и веб-серверы. Я предлагаю создать массив пар имя-значение для отправки, а затем создать строку запроса:
источник
Rails / PHP Style Query Builder
Этот метод преобразует объект Javascript в
URI Query String
. Также обрабатывает вложенные массивы и объекты (вRails
/PHP
синтаксис):Пример использования:
источник
function
чтобы исключитьfalsy
значения (null, undefined, NaN, '') ...используйте JSON.
взгляните на этот вопрос, чтобы узнать, как его реализовать.
источник
Вот версия принятого ответа coffeescript. Это может сэкономить время кому-то.
источник
Вот краткая и рекурсивная версия с Object.entries . Он обрабатывает произвольно вложенные массивы, но не вложенные объекты. Он также удаляет пустые элементы:
Например:
источник
Этот пропускает нулевые / неопределенные значения
источник
В ES7 вы можете написать это в одной строке:
источник
Одна строка для преобразования объекта в строку запроса на тот случай, если кому-то понадобится снова
источник
У меня есть более простое решение, которое не использует какую-либо стороннюю библиотеку и уже может использоваться в любом браузере с «Object.keys» (он же все современные браузеры + edge + ie):
В ES5
В ES3
источник
Если вы хотите преобразовать вложенный объект рекурсивно, и этот объект может содержать или не содержать массивы (а массивы могут содержать объекты или массивы и т. Д.), Решение становится немного более сложным. Это моя попытка.
Я также добавил несколько опций, чтобы выбрать, хотите ли вы записать для каждого элемента объекта, на какой глубине в главном объекте он находится, и выбрать, хотите ли вы добавить метку к элементам, которые поступают из преобразованных массивов.
В идеале вы должны проверить, действительно ли параметр thing получает объект или массив.
источник
Помимо принятого решения, это работает с объектами и массивом объектов:
Также добавили objName, если вы используете параметры объекта, как в методах действий asp.net mvc.
источник
Немного лучше выглядеть
источник
Я сделал сравнение строковых преобразователей JSON и получил следующие результаты:
Самым коротким из них является объектная нотация URL .
источник
хорошо, это старый пост, но я столкнулся с этой проблемой, и я нашел свое личное решение .. может быть, может помочь кому-то еще ..
источник
Приведенные выше ответы не работают, если у вас много вложенных объектов. Вместо этого вы можете выбрать параметр функции отсюда - https://github.com/knowledgecode/jquery-param/blob/master/jquery-param.js. Это сработало очень хорошо для меня!
источник
ES6 решение для быстрого кодирования строки объекта JAVASCRIPT
источник
Это решение, которое будет работать для бэкэндов .NET из коробки. Я взял основной ответ этой темы и обновил его, чтобы он соответствовал нашим потребностям .NET.
источник
Я написал пакет только для этого: object-query-string :)
Поддерживает вложенные объекты, массивы, пользовательские функции кодирования и т. Д. Легкий и бесплатный JQuery.
возвращается
источник
Просто другой способ (без рекурсивного объекта):
источник
Обратитесь к ответу @ user187291, добавьте «isArray» в качестве параметра, чтобы преобразовать вложенный массив json.
Чтобы сделать результат:
staffId = 00000001 & Деталь [0] .identityId = 123456 & Деталь [1] .identityId = 654321
источник
Вы также можете достичь этого с помощью простого JavaScript .
источник