Well, the short version is they serve different purposes, so the answer would be the "a combination of both for various situations" option. The basic rules are:
.ajaxComplete()
- runs for every request that completes, use this when you want to do something with each request/result. Note that this doesn't replace the success
handler, since the parsed data is not one of the arguments (and it runs even when there's an error) - you may want .ajaxSuccess()
in some per-request situations instead.
.ajaxStop()
- runs when every batch of requests completes, usually you'd use this in combination with .ajaxStart()
for things like showing/hiding a "Loading..." indicator of some sort - or to do something else once a batch of AJAX requests finishes, like a master last step.
If you're using this to parse your data, there's probably a better way, in this case $.ajaxSetup()
, where you can specify a success
handler that gets the already-parsed data (e.g. JSON responses will be objects), like this:
$.ajaxSetup({
success: function(data) {
//do something with data, for JSON it's already an object, etc.
}
});
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…