/ / Javascript AJAX функцията връща undefined вместо true / false - javascript, jquery, ajax, callback, return-value

Функцията Javascript AJAX връща undefined вместо true / false - javascript, jquery, ajax, callback, return-value

Имам функция, която издава повикване AJAX (чрез jQuery). В complete раздел Имам функция, която казва:

complete: function(XMLHttpRequest, textStatus)
{
if(textStatus == "success")
{
return(true);
}
else
{
return(false);
}
}

Ако обаче се обадя така,

if(callajax())
{
//  Do something
}
else
{
// Something else
}

Първият никога не се нарича.

Ако я сложа alert(textStatus) в complete функция Вярно, но не преди тази функция се връща undefined.

Би ли било възможно да ми се даде функция за обратно извикване callajax() метод? Като:

callajax(function(){// success}, function(){// error}, function(){// complete});

Отговори:

7 за отговор № 1

complete е обаждане функция. То ще бъде извикано от обекта Аякс - асинхронно! - когато операцията е завършена. Няма начин да хванете резултата от обратната връзка, само обектът на Аякс може да направи това.

Вашият callajax() функция - не показвате тази функция, а азда приемем, че просто прави обаждането в Аякс - не може да върне резултата на повикването (= хедъра на отговор и тялото), тъй като обаждането няма да е приключило, когато излезете callajax() функция.

Update: То е също е възможно да се правят синхронни AJAX обаждания. Благодарение на @Andris за това. В jQuery трябва да настроите async опция за false: Документи тук, Въпреки това, дори тези, които използват стандартните функции за обратно извикване, доколкото мога да видя, така че желаният от вас начин за връщане false или true може все още да не работи.