#javascript #post #fetch #url-encoding
#javascript #Публикация #выборка #url-кодировка
Вопрос:
Когда я пытаюсь опубликовать bodydata, используя URLSearchParams в fetch
, это работает в Chrome v72 и Edge v40, но не в IE11 (с полизаполнениями).
В IE11: я получаю эту ошибку:
Ошибка: неподдерживаемый тип BodyInit
Я использую следующие полизаполнения для браузеров Edge / IE / etc:
- whatwg-fetch: «3.0.0» (окно.выборка полизаполнения)
-
url-search-params-polyfill: «5.0.0» (простое полизаполнение для javascript
URLSearchParams
)const bodyData = новый URLSearchParams() Object.keys(configJson).map(ключ => { bodyData.append(encodeURIComponent(ключ), encodeURIComponent(configJson[ключ])) })
const выбирает = { метод: ‘POST’, тело: bodyData, заголовки: { ‘Content-Type’: ‘application/x-www-form-urlencoded;charset=UTF-8’ } }
выборка (endPointUrl, выбирает)
Комментарии:
1. Передал данные тела следующим образом,
const bodyData = Object.keys(configJson).map(key => { return encodeURIComponent(key) '=' encodeURIComponent(configJson[key]) }).join('amp;') const opts = { method: 'POST', body: bodyData, headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' } }
у меня это сработало.
Ответ №1:
Вы можете использовать ниже
Пример тела вашего запроса
{..., body : objToBodyObj(obj) ..}
Ниже приведена функция
function objToBodyObj(obj) {
var str = "";
for (var key in obj) {
if (str != "") {
str = "amp;";
}
str = key "=" encodeURIComponent(obj[key]);
}
return str;
}
Комментарии:
1. Я сделал это, как показано ниже,
const bodyData = Object.keys(configJson).map(key => { return encodeURIComponent(key) '=' encodeURIComponent(configJson[key]) }).join('amp;') const opts = { method: 'POST', body: bodyData, headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' } }