如果我将自己限制在.ajax方法(而不是像.get和.load这样的快捷方式),那么我应该使用延迟对象方法
.then, .done, .fail, .when, .reject, .resolve, .always, .promise
或全球事件处理程序:
.ajaxSuccess, .ajaxComplete, .ajaxError, .ajaxSetup, .ajaxStart, .ajaxStop,
答案 0 :(得分:2)
基本上,如果您想使用延迟方法,您需要将AJAX请求分配给变量。
var request = $.ajax({ /* Make ajax goodness */ });
然后你可以使用延迟对象来引用它。
$.when( request ).then(function() {
// Success
});
但据我所知,他们是一样的...我会查看文档并更新我是否不正确。
答案 1 :(得分:2)
关于延迟对象的方法(例如可以从jQuery AJAX请求构造)与特定延迟对象相关地执行。这与全局事件处理程序完全不同,因为这些将在任何AJAX请求时调用。因此,如果您在每个页面上只有一个AJAX请求,您将看到相同的结果,但当然,对于多个AJAX请求,情况会有很大不同。
延迟对象方法的对应部分是error
,success
和complete
方法,它们定义了jQuery AJAX请求的回调。
示例强>
var jqxhr = $.ajax({url:'myapi.json', method:'post'});
现在,使用jqxhr
,$.when(jqxhr).then(…)
相当于jqxhr.complete(…)
。类似的关系适用于resolve
和success
,reject
和error
。