2013-12-18 3 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() callback вместо –

ответ

2

Первый добавляет успех обратного вызова к методу AJAX.

Второй добавляет успешный обратный вызов к обещанию интерфейс, который возвращает $.ajax.

Я на самом деле не думаю, что есть success метод на отсроченном объекте, который $.ajax возвращает (возможно, есть наследство в старой версии), она должна быть done по docs:

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

интерфейс обещаний предоставляет метод успеха, но он устарел –

+0

В качестве примечания стороны, ajax() не возвращает отложенный объект, а интерфейс обещаний, как вы заявили вначале. Разница обещает интерфейс только для чтения, вы не можете разрешить/отклонить его –

+0

Я не вижу никакой разницы между этими двумя, как из callstack, оба из них, похоже, используют отложенную структуру. посмотрите http://jsfiddle.net/arunpjohny/S3kGD/1/ –

0

Нет никакой разницы между этими двумя фрагментами. Даже если вы используете свойство option success внутренне, оно добавляется в список обратных вызовов обещания запроса ajax.

enter image description here

Если вы смотрите на прилагаемом изображении вы можете увидеть, что значение, передаваемое success, error и complete передаются обратно методы обратного вызова объекта jqXHR в

Смежные вопросы