¿Cuál es la diferencia entre el éxito y el método .done () de $ .ajax

¿Alguien puede ayudarme?
No puedo entender la diferencia entre el success y .done() de $.ajax .

Si es posible, por favor den ejemplos.

En resumen, desvinculación de la función de callback de la función ajax para que luego pueda agregar sus propios controladores sin modificar el código original (patrón de observador).

Puede encontrar información más detallada desde aquí: https://stackoverflow.com/a/14754681/1049184

success solo se activa si la llamada AJAX tiene éxito, es decir, devuelve un estado HTTP 200. error dispara si falla y se complete cuando complete la solicitud, independientemente del éxito.

En jQuery 1.8 en el objeto jqXHR (devuelto por $.ajax ), el success se reemplazó por done , error with fail y se complete con always .

Sin embargo, aún debería poder inicializar la solicitud AJAX con la syntax anterior. Entonces estos hacen cosas similares:

 // set success action before making the request $.ajax({ url: '...', success: function(){ alert('AJAX successful'); } }); // set success action just after starting the request var jqxhr = $.ajax( "..." ) .done(function() { alert("success"); }); 

Este cambio es por compatibilidad con el objeto diferido de jQuery 1.5. Deferred (y ahora Promise , que tiene compatibilidad total con el navegador nativo en Chrome y FX) le permite encadenar acciones asincrónicas:

 $.ajax("parent"). done(function(p) { return $.ajax("child/" + p.id); }). done(someOtherDeferredFunction). done(function(c) { alert("success: " + c.name); }); 

Esta cadena de funciones es más fácil de mantener que una pirámide anidada de devoluciones de llamada que obtienes con success .

Sin embargo, tenga en cuenta que done ahora está en desuso en favor de la syntax de Promise que usa en su lugar:

 $.ajax("parent"). then(function(p) { return $.ajax("child/" + p.id); }). then(someOtherDeferredFunction). then(function(c) { alert("success: " + c.name); }). catch(function(err) { alert("error: " + err.message); }); 

Esto vale la pena adoptarlo porque async y await extend promete una syntax mejorada (y manejo de errores):

 try { var p = await $.ajax("parent"); var x = await $.ajax("child/" + p.id); var c = await someOtherDeferredFunction(x); alert("success: " + c.name); } catch(err) { alert("error: " + err.message); } 

.success() solo recibe una llamada si su servidor web responde con un encabezado HTTP 200 OK, básicamente cuando todo está bien.

Las devoluciones de llamada asociadas a done () se dispararán cuando se resuelva el aplazado. Las devoluciones de llamada asociadas a fail () se dispararán cuando se rechace el diferido.

 promise.done(doneCallback).fail(failCallback) .done() has only one callback and it is the success callback 

success es la callback que se invoca cuando la solicitud es exitosa y es parte de la llamada $.ajax . done es en realidad parte del objeto jqXHR devuelto por $.ajax() , y reemplaza el success en jQuery 1.8.