我目前在Javascript中严重依赖Native“Promise”对象进行AJAX调用。但是,正如https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise中提到的以及在IE11中的测试之后,Native Promises在IE中不起作用。
现在,解决方案是使用JQuery的Promises,但我无法使它工作。 请找到以下本地承诺的代码:(适用于IE以外的所有浏览器)
var getJSON = function (url) {
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
console.log(window.location);
console.log(window.location.origin);
xhr.open('get', url, true);
xhr.withCredentials = true;
xhr.responseType = 'application/json';
xhr.onload = function () {
var status = xhr.status;
if (status == 200) {
resolve(xhr.response);
} else {
reject(status);
}
};
xhr.send();
});
};
getJSON(url).then(function (data) {
console.log(data);
console.log("Success");
}, function (status) { //error detection....
console.log(status);
alert('Something went wrong.');
});*/
我尝试过类似的东西,但它不起作用
var promise = $.ajax({
url: url,
beforeSend: function (xhr) {
xhr.withCredentials = true;
}
}).done(function (data){
console.log(data);
});
我认为我们必须使用延迟对象但无法弄清楚!! 注意:由于缺少Node.js,无法使用PolyFill或BlueBird 感谢
答案 0 :(得分:0)
var p = $.ajax({
url: "yoururl",
type: "GET",
dataType: 'json',
xhrFields: {
withCredentials: true
}
});
// use p.then()
注意:
jQuery直接有$.JSON()
函数。
另外,如果您只是想要承诺,请查看Promise-Polyfill。