Call to jquery ajax - .fail vs. :error

ajax, callback, jquery

Solution

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(...);
    });

Problem

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 } }); ```

Original source