这两个jQuery ajax调用之间的主要功能区别是什么?

3

我见过这两种ajax调用方式,它们的主要功能区别是什么?

$.ajax({
    url: '',
    type: 'post',
    data: {},
    success: function (data) {
        alert(data);
    }
});

并且。
$.ajax({
    url: '',
    type: 'post',
    data: {}
}).success( function (data) {
    alert(data);
});

第一个可以,第二个也可以,但已被弃用,请改用.done()回调函数。 - A. Wolff
2个回答

2

第一个方法是向ajax方法添加成功回调函数。

第二个方法是向promise接口添加成功回调函数,这个接口是$.ajax返回的。

实际上,我认为在$.ajax返回的deferred对象中并没有success方法(也许在早期版本中有遗留问题),根据文档,应该使用done方法:

$.ajax({
    url: '',
    type: 'post',
    data: {}
}).done( function (data) {
    alert(data);
});

Promise接口暴露了success方法,但它已被弃用。 - A. Wolff
顺便提一下,ajax() 方法不会返回一个延迟对象,而是像你最初所说的那样返回一个 promise 接口。区别在于 promise 接口是只读的,你不能对其进行解决或拒绝操作。 - A. Wolff
我看不出这两者之间有什么区别,因为从调用堆栈来看,它们似乎都在使用延迟框架。请查看http://jsfiddle.net/arunpjohny/S3kGD/1/。 - Arun P Johny

0

这两个片段之间没有任何区别。即使您在内部使用了选项属性success,它也会被添加到ajax请求的promise回调列表中。

enter image description here

如果您查看附加的图像,您可以看到传递给successerrorcomplete的值被传回到jqXHR对象的回调方法中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接