У меня есть функция 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;
}
Он хорошо работает. Единственная проблема заключается в том, что, поскольку async установлен в 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
должна была дождаться, пока она полностью исполнится, а затем вернется к вызывающей функции и запустит следующие операторы в функции вызывающего абонента с остановкой процесса (т. Е. С использованием async). Также я хочу, чтобы значение, возвращаемое AJAX
, должно быть легко доступно для моей функции вызывающего абонента.
Длинный ответ: [Как вернуть ответ от звонка AJAX?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call), короткий ответ: добавьте предупреждения в обратный вызов. – JJJ
Попробуйте использовать плагин blockUI JQuery. http://www.malsup.com/jquery/block/ – nasaa
На самом деле я хочу вернуть значение статуса вызывающей функции. Чтобы упростить, я использовал предупреждения в этом случае! –