简体   繁体   中英

Access data from ajax success in complete?

Is there a way that I can access the data I receive during success so i can use it during the complete callback?

Or perhaps there is a way where i can assign multiple success functions?

What i need is, to allow success callback to be changed based on situation, but I need to always perform a dedicated function on success using the same data that was returned to the first function.

I suppose i can always setup my call like so, but i'm looking to see if there is a better way.

CallServer = function(options) {
  if(options.success) {
    var customSuccess = options.success;
    options.success = function(data) {
      defaultSuccess(data);
      customSuccess(data);
    }
  }
  $.extend(true, defaults, options);
  $.ajax(defaults);
}

EDIT: I have found my answer. I didn't realize that the xhr holds the data as the responseText. so the following gets me the same thing that gets returned as 'data' on success.

complete: function(xhr){dosomething(xhr.responseText);}

and that's it! Thanks

In jQuery, the success callback accepts the data as its first argument.

From the jQuery Documentation ( http://api.jquery.com/jQuery.ajax/ ) the argument list for the success callback is:

success(data, textStatus, jqXHR)

As far as I am aware, there is no built-in way to add multiple success callbacks, but you could easily dispatch any number of functions from a custom success callback.

Perhaps you could use a system like:

function customSuccess(data) {
    if (situation == "one way") {
        firstFunction(data):
    }
    else if (situation == "another way") {
        secondFunction(data);
    }
}

I have found my answer. I didn't realize that the xhr holds the data as the responseText. so the following gets me the same thing that gets returned as 'data' on success.

complete: function(xhr){dosomething(xhr.responseText);}

and that's it! Thanks

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM