我有一个从函数AJAX
调用的javascript
函数。像这样的东西:
(CODE1)
//javascript function calling AJAX.
var function check(){
var status = chkHoliday(date,'Date Chosen');
alert('called');
return status;
}
//AJAX function
function chkHoliday(date,str){
var flag = true;
$.ajax({
type: "GET",
url: someurl,
async: false, //if commented, the alert() from the caller function is called before completion of this function.
dataType: "json",
success: {
flag = false;
}
});
return flag;
}
它运作良好。唯一的问题是,由于 async 设置为false
,因此网页会暂停一段时间,但随后会继续进行。
为了避免这种情况,我读了一些关于回调函数的东西,所以我试了一下:(CODE 2)
//javascript function calling AJAX.
var function check(){
var status;
chkHoliday(date,'Date Chosen',function(retVal){
status = retVal;
});
if(status != null){
alert(status);
return status;
}
else{
alert(true);
return true;
}
}
//AJAX function
function chkHoliday(date,str,callback){
var flag = true;
$.ajax({
type: "GET",
url: someurl,
//async: false, //if commented, the alert() from the caller function is called before completion of this function.
dataType: "json",
success: {
flag = false;
callback(flag);
}
});
//return flag;
}
AJAX
这有效,但在函数完成声明“未定义”之前再次调用了警报。我不知道我做错了什么。
我希望该AJAX
函数应该等到它完全执行然后返回调用函数并在调用函数中运行下一个语句并停止进程(即使用异步)。我还希望AJAX
我的调用者函数可以轻松访问返回的值。