2016-11-24 3 views
1

Ich habe folgenden Code in meiner ReactJS App, die nicht auf IE11 Browser funktioniert. Das Problem ist mit fetch Aufruf auf IE11 Browser. Die Anwendung führt den API-Aufruf nicht zum Server durch.ReactJS redux saga fetch api

Es funktioniert hervorragend auf Chrome, Firefox, Safari und Edge. Könnte jemand bitte vorschlagen, welche Schritte ich ausführen muss, um IE11 auch zu unterstützen? Vielen Dank.

function toQueryString(obj) { 
    var parts = []; 
    for (var i in obj) { 
     if (obj.hasOwnProperty(i)) { 
      parts.push(encodeURIComponent(i) + "=" + encodeURIComponent(obj[i])); 
     } 
    } 
    return parts.join("&"); 
} 
var options = new Object; 
options.searchoptions = JSON.stringify(searchoptions); 
options.limit = limit; 
options.offset = offset; 
var optionstr = toQueryString(options); 

return fetch(`${SERVER_URL}/api/resource/?${optionstr}`, { 
    method: 'get', 
    dataType: 'json', 
    credentials: 'same-origin', 
    headers: { 
    'Accept': 'application/json', 
    'contentType': 'application/json', 
    'X-CSRFToken': getCookie('csrftoken') 
    } 
}).then(response => { 
    return response.json(); 
    }).then(response => { 
    var data = JSON.parse(response); 
    return data; 
}).then(json => { 
    return json; 
}); 

Antwort

2

Abruf in IE ist nicht 11. unterstützt, aber Sie ein polyfill https://github.com/github/fetch

Sie könnten ein Versprechen polyfill wie babel-polyfill auch brauchen können. https://babeljs.io/docs/usage/polyfill/

Hinweis: Es enthält mehr als nur Versprechen.

+0

Hallo, danke für deine Antwort. Ich schätze deine Hilfe sehr. Ich habe eine Frage. Muss ich meinen bestehenden Code ändern? Ist es nur die Installation und das Hinzufügen einer Importanweisung oder ist mehr erforderlich? – Kevin

+1

Sie müssen nur das Polyfill installieren und importieren. Sie müssen Ihren Code nicht ändern. Weil ihre Implementierung dem nativen Abruf folgt. –