2013-12-18 47 views
3

我見過這兩種ajax調用,它們之間的主要功能區別是什麼?這兩個jQuery ajax調用的主要功能區別是什麼?

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

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

第一是確定的,第二個是確定,但不推薦使用.done()回調代替 –

回答

2

第一添加成功回調到AJAX方法。

第二個將成功回調添加到承諾$.ajax返回的接口。

其實我不認爲這是一個success方法遞延對象上$.ajax回報(也許有在舊版本的傳統),它應根據docsdone

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

承諾接口公開成功方法,但不推薦使用 –

+0

作爲附帶說明,ajax()不會返回延遲對象,而是像您先說的那樣返回承諾接口。差異是承諾接口是隻讀的,你不能解決/拒絕它 –

+0

我看不出這兩者之間的任何區別,因爲從調用堆棧他們似乎都使用延期框架。看看http://jsfiddle.net/arunpjohny/S3kGD/1/ –

0

這兩個片段之間沒有區別。即使您在內部使用選項屬性success,它也會被添加到ajax請求的promise回調列表中。

enter image description here

如果你看一下附加的圖像,你可以看到,值傳遞給successerrorcomplete被傳遞迴jqXHR對象的回調方法