返回值我有一個jQuery $。員額功能LIK這樣:
$.post('/test',json_data, function(data) {
result=data
});
這個功能實際上是被以驗證它的返回值(數據)使用...所以包含真或假。但是這個值沒有被存儲在變量'result'中。據我所知,這是因爲post進行異步調用,因此它不會等待響應。我想問的是,有沒有解決方法?或者這個調用可以以某種方式同步?
返回值我有一個jQuery $。員額功能LIK這樣:
$.post('/test',json_data, function(data) {
result=data
});
這個功能實際上是被以驗證它的返回值(數據)使用...所以包含真或假。但是這個值沒有被存儲在變量'result'中。據我所知,這是因爲post進行異步調用,因此它不會等待響應。我想問的是,有沒有解決方法?或者這個調用可以以某種方式同步?
這被認爲是不好的做法,但有一個async
參數$.ajax()
,你可以設置爲false
和同步等待結果:
var result;
$.ajax({
type: 'POST',
url: '/test',
data: json_data,
async: false,
success: function(data) {
result=data;
},
dataType: 'application/json'
});
//result available here
更地道,但在這種情況下稍微不太方便,是採取回調的優勢:
function validate(okCallback, errorCallback) {
$.post('/test',json_data, function(data) {
if(data) {
okCallback();
} else {
errorCallback();
}
});
}
validate(
function() {
//proceed
},
function() {
//display validation error
}
}
Thakyou爲您的答案...但似乎我將不得不使用回調方法畢竟。我嘗試了一些方法,但無濟於事......你能幫我解決我描述的問題[這裏](http://stackoverflow.com/questions/8542224/validation-after-ajax-call)。或者至少告訴我,我使用的方法是否可以......我有這種嘮叨的感覺,可能有比我所描述的更好的方法來做到這一點。 – Adnan 2011-12-19 15:24:31
的合法性進行檢查回調內部
$.post('/test',json_data, function(data) {
var result=data;
if(result === true) {
// do some ok processing...
} else {
// do not ok processing...
}
});
它是異步的,你需要檢查回調函數內部的響應 - 在`result = data`之後進行檢查。 – 2011-12-16 09:27:26