我有一個javascript函數,它調用一個通用函數來對服務器進行ajax調用。我需要從ajax調用的回調函數中檢索結果(true/false),但是我得到的結果總是'undefined'。提升callback onSuccess返回值給來電函數返回值
沒有所有的通用功能的超級簡化版本,我的邏輯是:
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();
}
}
的「結果」變量總是'未定義',並調試它,我可以看到回調函數的「返回true」行正在執行。
爲什麼會發生這種情況的任何想法?我怎麼可能冒泡從回調函數到CallServer函數的返回值?
感謝
儘管這可能對您有用,但它是不可預測的代碼,因爲在異步POST設置其值之前,您可能會從CallServer返回「returnValue」。經驗法則:不要在同步包裝中包裝異步調用! – 2010-02-03 00:23:38
你可能會考慮$ .when的方式來等待異步調用http://api.jquery.com/jQuery.when/ – Andbdrew 2012-08-28 18:28:55