Call to jquery ajax - .fail vs. :error

后端 未结 3 1035
悲哀的现实
悲哀的现实 2020-12-04 17:07

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,
             


        
相关标签:
3条回答
  • 2020-12-04 17:51

    Just to freshen this up...

    The success and error approach have been deprecated as of jQuery 1.8.

    jQuery Ajax

    Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are deprecated as of jQuery 1.8. To prepare your code for their eventual removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

    0 讨论(0)
  • 2020-12-04 17:53

    Using the chainable deferred object promise style allows for a cleaner structure and the use of always.

    let data = {"key":"value"}
    
    $.ajax({
        type: 'PUT',
        url: 'http://example.com/api',
        contentType: 'application/json',
        data: JSON.stringify(data), 
    }).done(function () {
        console.log('SUCCESS');
    }).fail(function (msg) {
        console.log('FAIL');
    }).always(function (msg) {
        console.log('ALWAYS');
    });
    
    0 讨论(0)
  • 2020-12-04 17:59

    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(...);
        });
    
    0 讨论(0)
提交回复
热议问题