我为我的ajax调用创建了承诺,当他返回STATUS 200时......一切都很好......“promise.then ..”函数没有调用...
这是我的代码:
var promise = new Promise(function (resolve, reject) {
var http = new XMLHttpRequest();
var url = "ajax_add.php";
var params = "title=" + title + "&body=" + body + "&edit=" + edit + "&username=" + username;
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function () {//Call a function when the state changes.
if (http.readyState == 4 && http.status == 200) {
resolve(http.responseText);
} else {
reject(Error(http.statusText));
}
}
http.send(params);
});
promise.then(function (data) {
if (edit == 0) {
var json = JSON.parse(data);
console.log(json);
divResult.innerHTML = data.result;
divResult.style.display = "block";
var countPosts = document.getElementsByClassName('post').length;
var mostLongUser = document.getElementById('the-username');
if (countPosts == 0) {
mostLongUser.innerHTML = data.username;
document.getElementsByClassName('danger')[0].style.display = "none"; //Its first
} else {
mostLongUser.innerHTML = data.mostlong.username;
}
var posts = divPosts.innerHTML;
divPosts.innerHTML = data.newPosts + posts;
} else {
window.location.href = homeUrl;
}
}, function (error) {
divResult.innerHTML = 'It seems we have error with publish posts. Try again later!';
});