可能重複:
jQuery Ajax always returns 「undefined」?jQuery的 - 創建一個通用的AJAX功能
我試圖想出一個通用的jQuery AJAX功能,使用url &參數和返回結果。我試圖避免使用async:false
,因爲它鎖定了瀏覽器。如果我在ajax調用中使用success
回調,由於時間問題返回的數據爲空(成功不會等到數據返回)。如果我使用complete
,則persons
對象在LoadPersons
方法中仍然爲空,因爲它不會等待從ajax調用返回數據。如果在complete
回調中放置alert(persons)
,我得到[object][Object]
,因此我將數據恢復。我如何「修復」這個問題?我說話有道理嗎?我也希望在這樣做時顯示「加載..」圖像。
這裏是我的代碼 -
<script type="text/javascript">
$(function() {
var persons;
var urlGetPersons = "Default.aspx/GetPersons";
LoadPersons();
function LoadPersons() {
persons = CallMethod(urlGetPersons, { });
if (persons != null) {
// do something with persons.
}
}
function CallMethod(url, parameters) {
var data;
$.ajax({
type: 'POST',
url: url,
data: JSON.stringify(parameters),
contentType: 'application/json;',
dataType: 'json',
success: function(result) {
data = result.d;
}, // use success?
complete: function(result) {
data = result.d;
} // or use complete?
});
return data;
}
});
</script>
'我試圖想出一個通用的jQuery AJAX函數,它接受的URL和參數,並返回結果'是不是'$ .ajax()'是什麼? – 2012-02-18 00:10:26
我明白了。我只是想拿出一個簡寫。我知道我可以使用'.ajaxSetup'並設置默認值,但它仍然需要幾行來編寫實際的函數。 – tempid 2012-02-18 00:12:05
這樣的函數不能在不鎖定瀏覽器的情況下同步返回結果,這就是爲什麼ajax是異步的。 Javascript沒有別的事情要做,只能在服務器返回響應時掛起。 – Diego 2012-02-18 00:13:22