我不知道我怎样才能让我的剧本等待AJAX来完成: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
消息。有人能解释我吗?
在'success'函数中测试url是否存在。按照定义,AJAX是异步的,所以js不会等待结果。相反,使用你的'成功'回调。 –
AJAX是异步的。稍后会调用成功处理程序... – andlrc
您还可以通过在请求的配置中传递async:false来使任何ajax请求异步。如果你不想这样做,请执行@JonathanM建议的操作:在成功回调中执行要等待ajax请求结果的代码。 – marekful