我有一個AJAX
函數,該函數從javascript
函數調用。 類似這樣的:JQUERY AJAX WITH CALLBACK
(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;
}
它運作良好。唯一的問題是,因爲異步它被設置爲false
,網頁排序暫停一段時間,但然後繼續進行下去。
爲了避免這種情況我讀一些有關回調函數,所以我嘗試了這一點: (代碼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
返回的值應該可以方便地訪問我的調用者函數。
長答案:[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call),簡短的回答:將警報也放在回調中。 – JJJ
嘗試使用Jquery的blockUI插件。 http://www.malsup.com/jquery/block/ – nasaa
其實我想將狀態的值返回給調用函數。爲了簡化我在這種情況下使用的警報! –