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>