如何在IE 11中通过Fetch发布数据URLSearchParams

时间:2019-03-14 11:48:30

标签: javascript post fetch url-encoding

当我尝试在fetch中使用URLSearchParams发布正文数据时,它可以在Chrome v72和Edge v40中使用,但不能在IE11(带有polyfills)上使用。

在IE11上:我收到此错误:

  

错误:不支持的BodyInit类型

我正在为Edge / IE / etc浏览器使用以下polyfill:

  • whatwg-fetch:“ 3.0.0”(一个window.fetch polyfill)
  • url-search-params-polyfill:“ 5.0.0”(JavaScript URLSearchParams的简单polyfill)

    const bodyData = new URLSearchParams() Object.keys(configJson).map(key => {   bodyData.append(encodeURIComponent(key),   encodeURIComponent(configJson [key])) })

    const opts = {   方法:“ POST”,   正文:bodyData,   标头:{     “内容类型”:“ application / x-www-form-urlencoded; charset = UTF-8”   } }

    fetch(endPointUrl,opts)

1 个答案:

答案 0 :(得分:0)

您可以在下面使用

以您的请求正文为例

{..., body : objToBodyObj(obj) ..}

下面是功能

function objToBodyObj(obj) {
  var str = "";
  for (var key in obj) {
    if (str != "") {
      str += "&";
    }
    str += key + "=" + encodeURIComponent(obj[key]);
  }
  return str;
}