Javascript不等待AJAX​​错误完成

时间:2014-07-14 15:18:04

标签: javascript jquery ajax get

我在订购一些Javascript AJAX交互时遇到了麻烦。

我有一个表单,用户输入的是一个玩家代号(summonerName)。然后我使用AJAX到游戏的API来获取该用户的ID

但是,如果它是一个无效的名称(GET错误GET url 404 Not Found),我的JS事件会在等待AJAX​​ error完成之前继续。

因此,在表单提交后,我会收到通知,说明发生了一个错误,此时停止表单已经太晚了。

我原本认为error函数会像success函数一样保持优先级,因为我的所有脚本应该等到它完成。

var good = true; // if false will halt form when it reaches submission function
var summoner = $('#createSummonerName').val().trim();
var summonerID = "";
    if (summoner != "" && summonerID == "") {
            var ID = "";
            ID = summoner;
            var YOURKEY = "(key)";
            alert("checking");
                $.ajax({
                    url: 'https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/' + ID + '?api_key=' + YOURKEY,
                    type: 'GET',
                    dataType: 'json',
                    data: {

                    },
                    success: function (json) {
                        var userID = ID.replace(" ", "");
                        userID = userID.toLowerCase().trim();
                        summonerIDpull = json[userID].id;
                        summonerID = summonerIDpull;
                        alert("found");
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        summonerID = "";
                        alert("not found");
                        document.getElementById("createSummonerName").className = document.getElementById("createSummonerName").className + " error";
                        good = false;

                    }
                });
    }
    // more functions that validate and submit the form

所发生的情况是,如果发生GET错误,表单将提交并且alert("not found");发生一秒钟。 :(

是否有错误/问题/异常并使脚本等待直到该错误被处理?由于错误的延迟,我的good = false;行在表单提交之后才会运行,这是不好的。

我仍然是AJAX的新手,很抱歉,如果这是一个简单的答案,我误解了一些概念。

0 个答案:

没有答案