By using jQuery.when()
and deferred.resolve
at jQuery.ajax
complete
event
you could gather all requests and see which one succeed and which one failed.
Try running the code below, but please note there are no example.php
on stackoverflow, so you'll see all 4 requests failed.
jQuery(function($) {
// make all requests
var requests = $('.item').map(function(idx, elm) {
var deferred = $.Deferred();
$.ajax({
method: 'post',
url: 'example.php',
data: { id: idx + 1 },
complete: deferred.resolve
});
return deferred;
});
// when all requests are done.
$.when.apply($, requests).done(function() {
var stats = { success: 0, error: 0 };
// count how many of them succeed or failed.
for (var i = 0; i < arguments.length; i++) {
stats[arguments[i][1]]++;
}
// print resullt.
console.log(
arguments.length + ' Requests completed, ' +
stats.success + ' Succeeded, ' +
stats.error + ' Failed.'
);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="save">Save</button>
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>