Есть ли способ создать параметры запроса для выполнения запроса GET в JavaScript?
Как и в Python urllib.urlencode()
, который берет словарь (или список из двух кортежей) и создает строку вроде 'var1=value1&var2=value2'
.
Есть ли способ создать параметры запроса для выполнения запроса GET в JavaScript?
Как и в Python urllib.urlencode()
, который берет словарь (или список из двух кортежей) и создает строку вроде 'var1=value1&var2=value2'
.
Ну вот:
function encodeQueryData(data) {
const ret = [];
for (let d in data)
ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));
return ret.join('&');
}
Использование:
const data = { 'first name': 'George', 'last name': 'Jetson', 'age': 110 };
const querystring = encodeQueryData(data);
for
использованием hasOwnProperty для обеспечения взаимодействия.URLSearchParams имеет все большую поддержку браузеров.
Node.js предлагает модуль querystring .
источник
searchParams.append(otherData)
функциональная
источник
var data = { bloop1: true, bloop2: "something" }; var url = "https://something.com/?"; var params = encodeData(data); var finalUrl = url + params; // Is this the right use?
Должен производитьhttps://www.something.com/?bloop1=true&bloop2=something
?Забба предоставил в комментарии к принятому в настоящее время ответу предложение, которое для меня является лучшим решением: используйте jQuery.param () .
Если я использую
jQuery.param()
данные в исходном вопросе, тогда код будет просто:Переменная
params
будетБолее сложные примеры, входные и выходные данные см. В документации jQuery.param () .
источник
Мы только что выпустили arg.js , проект, нацеленный на решение этой проблемы раз и навсегда. Традиционно это было так сложно, но теперь вы можете:
И чтение работает:
или получить всю партию:
и если вы заботитесь о разнице между
?query=true
и#hash=true
после этого вы можете использоватьArg.query()
иArg.hash()
методы.источник
Это должно сработать:
Пример:
Результат:
источник
encodeURIComponent()
вместоencodeURI
. О разнице читайте .ES2017 (ES8)
Используя
Object.entries()
, который возвращает массив[key, value]
пар объектов . Например, за{a: 1, b: 2}
это вернется[['a', 1], ['b', 2]]
. Он не поддерживается (и не будет) только IE.Код:
Пример:
Результат:
источник
Если вы используете Prototype, есть Form.serialize
Если вы используете jQuery, есть Ajax / serialize
Я не знаю каких-либо независимых функций для этого, но поиск в Google обнаружил некоторые многообещающие варианты, если вы в настоящее время не используете библиотеку. Если нет, то действительно должны, потому что они рай.
источник
Просто хотелось бы вернуться к этому вопросу, которому уже почти 10 лет. В эту эпоху готового программирования лучше всего настроить свой проект с помощью диспетчера зависимостей (
npm
). Существует целая индустрия библиотек, которые кодируют строки запроса и заботятся обо всех крайних случаях. Это один из самых популярных -https://www.npmjs.com/package/query-string
источник
Небольшая модификация машинописного текста:
источник
Этот поток указывает на некоторый код для экранирования URL-адресов в php. Есть
escape()
иunescape()
который сделает большую часть работы, но вам нужно добавить пару дополнительных вещей.источник