Как опубликовать URLSearchParams данных с помощью выборки в IE 11

#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' } }