Javascript承诺不起作用,不要调用然后功能

时间:2016-09-15 07:11:08

标签: javascript promise

我为我的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!';
                });

0 个答案:

没有答案