Which one should I use?
Is there any reason to use one rather than the other?
Is one better for error handling?
$.ajax({
url: url,
data: { start: start, end: end }
}).done(function(data, textStatus, jqXHR) {
$('#myElement').append(data);
}).fail(function() {
// report error
});
OR
$.ajax({
url: url,
data: { start: start, end: end },
success: function(data, textStatus, jqXHR) {
$('#myElement').append(data);
},
error: function(jqXHR, textStatus, errorThrown) {
// report error
}
});
The two options are equivalent.
However, the promise-style interface (
.fail()and.done()) allow you to separate the code creating the request from the code handling the response.You can write a function that sends an AJAX request and returns the jqXHR object, and then call that function elsewhere and add a handler.
When combined with the
.pipe()function, the promise-style interface can also help reduce nesting when making multiple AJAX calls: