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 } });
ajax function is deprecated.
The best way to bubble that error from the server side (using php) to the client side is to send a header through the Ajax request somewhere in the 400's (which is always associated with errors). Once the Ajax request receives this it will trigger your error function.
ajax method lets you set a timeout in milli seconds. When a timeout happens, The fail callback is called, with errorThrown set to "timeout". The request is aborted, meaning that even if the response arrives later on, your done callback is not called by jQuery.
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:
$.ajax(...) .pipe(function() { return $.ajax(...); }) .pipe(function() { return $.ajax(...); }) .pipe(function() { return $.ajax(...); });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With