Las preguntas:
.done()
& success:
, .fail()
& error:
y .always()
& complete:
?El preámbulo:
Estaba montando una llamada jQuery.ajax, que también he hecho con éxito en el pasado. Algo así
$.ajax(
{
url: someUrl,
type: 'POST',
data: someData,
datatype: 'json',
success: function (data) { someSuccessFunction(data); },
error: function (jqXHR, textStatus, errorThrown) { someErrorFunction(); }
});
Mientras echaba un vistazo rápido a la documentación, me encontré con una referencia que decía que Las llamadas de retorno de éxito, error y completo están obsoletas a partir de jQuery 1.8. Para preparar tu código para su eventual eliminación, utiliza jQuery.ajax. Para preparar tu código para su eventual eliminación, utiliza jqXHR.done(), jqXHR.fail(), y jqXHR.always() en su lugar.
Por lo tanto, deberíamos empezar a codificar algo como esto en su lugar:
$.ajax( "example.php" )
.done(function (data) { someSuccessFunction(data); })
.fail(function (jqXHR, textStatus, errorThrown) { someErrorFunction(); })
.always(function() { alert("complete"); });
Pues no hay ninguna ventaja en hacerlo en esa situación concreta.
El punto de los métodos .done()
.fail()
.always()
es que puedes
$.ajax
.Si usted está en el sitio de llamada $.ajax
sólo adjuntando manejadores individuales entonces esas ventajas realmente no entran en juego.
Así que puedes devolver la promesa y otros pueden adjuntar sus propios manejadores.
Un ejemplo es refrescar plugins después de una petición ajax:
$.ajaxPrefilter(function(opt, origOpt, jqxhr) {
jqxhr.always(function() {
$("[data-plugin]").plugin();
});
});