我想知道如何让我的脚本等待 AJAX 完成:
function urlExists(testUrl){
var ajaxurl = 'some AJAX URL';
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {
"action": "somefunction",
"content": testUrl
},
global: false,
success: function(){
alert('ajax successs');
return true;
},
error: function(){
return false;
}
});
return false;
}
/* The AJAX function returns TRUE or FALSE 100% alright. */
/* The interesting part begins below. */
if(urlExists(src)){
alert('test');
}else{
alert('test2');
}
当 AJAX 返回 TRUE(或 FALSE)时,if(urlExists(src))
总是说 test2
...我打赌这是因为它没有等待 AJAX 完成?但这有什么作用呢?为什么会这样?我得到了 test2
,不久之后 ajax successs
。我需要它来显示 test
消息。谁能给我解释一下?
最佳答案
The AJAX function returns TRUE or FALSE 100% alright.
没有。如最后一行所述,它总是返回 false
。
how to wait for it to complete?
您不能用“休眠”来“等待”,因为它是一项异步 任务。您将需要使用回调。使用 jQuery 的 Deferreds,它看起来像这样:
function urlExists(testUrl){
return jQuery.ajax({
type: "POST",
url: 'some AJAX URL',
data: {
"action": "somefunction",
"content": testUrl
},
global: false,
success: function(){
alert('ajax successs');
}
});
}
urlExists(src).done(function(){
alert('test');
}).fail(function(){
alert('test2');
}); // returns the promise immediately, but will alert later on
关于javascript - AJAX 线程 - 如何等待它完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958825/