我在订购一些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的新手,很抱歉,如果这是一个简单的答案,我误解了一些概念。