因爲你所要做的是在所有的GET請求都完成時做一些事情,你應該跟蹤所有的請求,然後做一些事情。請注意,如果您嘗試聯繫可能無法返回的資源,則可能需要進行超時檢查和/或使用complete
處理程序,該處理程序將在所有其他處理程序都會啓動後觸發,包括如果有錯誤,超時或whatnot(這意味着,success
可能永遠不會運行,並且您的代碼可能永遠不會被告知完成)。
重要!打開Firefox中的Chrome控制檯或Firebug以查看輸出。
<div id="div">
<input type="text"/>
<input type="text"/>
<input type="text"/>
<input type="text"/>
<input type="text"/>
</div>
console.clear();
var c_inputs = 0;
var $div = $('#div');
var $inputs = $div.find(':input');
$div.data('data-inputs',$inputs.length);
$div.data('data-messages',0);
console.log('Number of inputs: ' + $div.data('data-inputs') + ' Number of messages: ' + $div.data('data-messages'));
$inputs.each(function() {
var loadUrl = "#";
$.ajax({
type: "GET",
url: loadUrl,
success: function(msg) {
var $div = $('#div');
var count = parseInt($div.data('data-messages'));
var inputs = parseInt($div.data('data-inputs'));
count++;
$div.data('data-messages',count);
console.log('Current message count: ' + count + ' == Total Inputs: ' + inputs);
if (count == inputs) {
finishedInputs();
}
}
});
});
function finishedInputs() {
console.log('Finished! (' +
$('#div').data('data-messages') +
' of ' +
$('#div').data('data-inputs') +
')'
);
}
http://jsfiddle.net/msJgT/
這是因爲這些AJAX調用是異步的,但'警報()'立即運行。 –
你有沒有試過把'alert(test);'放在'success:'中? –
是的,但我想在處理完所有元素後處理結果 – klaaz