我对用于进行ajax调用的JQuery .post()函数有疑问。问题出在下面的代码中:
$.post( "processOrder", $( "#OrderForm" ).serialize(), function() {
// What is the diff between putting code here....
})
.done(function(data) {
// ... and putting it in the "done" instead ?....
})
.fail(function() {
})
.always(function() {
});
答案 0 :(得分:1)
只有在请求被认为成功并且它们都将相同的参数传递给回调(data,textStatus,jqXHR)时,两者才会触发。唯一的区别是.done()
附加在"承诺"样式并使用jQuery的Deferred Object实现,而另一个作为参数传递给$.post
。
您可能会认为.done()
方法更灵活,因为您可以在其他地方返回或传递jQuery对象,从而允许其他代码添加.done()
或其他延迟处理程序。也就是说,您仍然可以使用成功处理程序作为参数,然后再添加.done()
。最后,.done()
可以接受一系列回调,所有回调都将被执行,而success参数只接受一个函数。