admin管理员组文章数量:1315229
I have some Problem with this code. I will use this code instead of a polyfill. The code works using Firefox, Chrome, Opera and MS Edge but the Internet Explorer 11 is not responding. Can someone give me a tip for Troubleshooting.
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);
}
I have some Problem with this code. I will use this code instead of a polyfill. The code works using Firefox, Chrome, Opera and MS Edge but the Internet Explorer 11 is not responding. Can someone give me a tip for Troubleshooting.
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);
}
Thank You.
Best Regards, Markus
Share Improve this question asked Sep 28, 2018 at 9:40 MarkusMarkus 311 gold badge1 silver badge2 bronze badges3 Answers
Reset to default 3I would remend looking into isomorphic fetch
On request, here is how you would use it
Install the isomorphic-fetch
and es6-promise
packages
npm install --save isomorphic-fetch es6-promise
After you have installed the packages, require
them in your application
require('es6-promise').polyfill()
require('isomorphic-fetch')
This should allow you to use fetch
normally
fetch(url).then(handleResponse).catch(handleError)
I would like to add something here as I came here with the same problem in IE11 with fetch API. In my case, I was using fetch in vanilla JS not in conjunction with any framework.
I already had a polyfill from here. One can just download fetch.umd.js file and place inside script tag. Then I got undefined Promise error. So I had to have a Promise polyfill too from here.
I have used both of them in a simple script tag in my layout file just before I load other scripts as I am using Visual Studio and Promise polyfill also has cdn:
<script src="https://cdn.jsdelivr/npm/promise-polyfill@8/dist/polyfill.min.js"></script>
I hope it will help someone looking for solution without having to install them as mentioned in above examples.
i have used isomorphic fetch and it works fine in all browsers
require('es6-promise').polyfill();
require('isomorphic-fetch');
本文标签: javascriptI have a problem with the Fetch API using Internet Explorer 11Stack Overflow
版权声明:本文标题:javascript - I have a problem with the Fetch API using Internet Explorer 11 - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741962223a2407347.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论