У меня есть функция javascript, которая вызывает общую функцию для вызова ajax на сервер. Мне нужно получить результат (true/false) из функции обратного вызова вызова ajax, но результат, который я получаю, всегда «неопределен».Содействовать обратному вызову возвращаемого значенияSuccess для возвращаемого значения функции Caller
супер-упрощенный вариант обобщенной функции без вся моя логика была бы:
function CallServer(urlController) {
$.ajax({
type: "POST",
url: urlController,
async: false,
data: $("form").serialize(),
success:
function(result) {
if (someLogic)
return true;
else
return false;
},
error:
function(errorThrown) {
return false;
}
});
}
И функция, вызывающая это будет что-то вроде:
function Next() {
var result = CallServer("/Signum/TrySave");
if (result == true) {
document.forms[0].submit();
}
}
«результат» Переменная всегда «undefined», и отлаживая его, я вижу, что выполняется строка «return true» функции обратного вызова.
Любые идеи, почему это происходит? Как я мог бы вернуть возвращаемое значение из функции обратного вызова функции CallServer? bubble?
Благодаря
Хотя это может работать для вас, это непредсказуемый код, потому что вы, скорее всего, вернете «returnValue» с CallServer до того, как async POST установит его значение. Правило большого пальца: не обматывайте асинхронные вызовы в синхронных оболочках! –
вы можете заглянуть в $ .when для ожидания ожидания асинхронных вызовов http://api.jquery.com/jQuery.when/ – Andbdrew