我在使用Internet Explorer 11的Fetch API时遇到问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (77)

我对此代码有一些问题。我将使用此代码而不是polyfill。该代码使用Firefox,Chrome,Opera和MS Edge,但Internet Explorer 11没有响应。有人可以给我一个故障排除提示。

function fetchFile(file,method,params,target) {

const controller = new AbortController();
const signal = controller.signal;

setTimeout(controller.abort.bind(controller), 5000); 

var options = { method: method, signal }; 

if (params != 'default') {

switch (method) { case 'GET':  file = file+'?'+params; break;

                  case 'POST': var data = params; break; default: data = 'data'; break;}

} 

switch (method) { case 'POST': options.body = data; options.headers = {"Content-Type": "application/x-www-form-urlencoded"}; break;}

fetch(file, options).then(function (response)  {

  return response.text();

}).then(function (data)  {

  document.getElementById(target).innerHTML = data;  

  switch (data) {case '': loadXhttp(file,method,params,target); break;} 
  
  
}).catch(function (data) {


switch (error.name) {

   case 'AbortError': var error = 'Abort Error'; break; 

   default: error = 'Other Error'; break;} 

   document.write(error);

});

}

function loadXhttp(file,method,params,target) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById(target).innerHTML = this.responseText;
    }
  };
  xhttp.open(method, file, true);
  
  switch (method) {case 'GET': var send = null; break;
                  case 'POST': xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				               send = params; break;} 
  
  xhttp.send(send);
}
​

求助谢谢!

提问于
用户回答回答于

这是答案!:

npm install --save isomorphic-fetch es6-promise

在第一个加载JS文件(在我的情况下为index.js)中添加:

import "es6-promise";
import "isomorphic-fetch";

现在应该可以运行了。

(如果你无法让IE 11完全渲染你的React应用程序,并且“npm install babel-polyfill”,将它导入你第一个加载的JS文件中的第一行)。

用户回答回答于

我建议调查isomorphic fetch

根据要求,您可以使用它

安装isomorphic-fetches6-promise

npm install --save isomorphic-fetch es6-promise

在您的应用程序中安装它们之后:

require('es6-promise').polyfill()
require('isomorphic-fetch')

这应该允许您正常使用fetch

fetch(url).then(handleResponse).catch(handleError)

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励