Alguém pode me ajudar?
Eu não sou capaz de entender a diferença entresuccess
e .done()
de$.ajax
.
Se possível, dê exemplos.
Alguém pode me ajudar?
Eu não sou capaz de entender a diferença entresuccess
e .done()
de$.ajax
.
Se possível, dê exemplos.
Respostas:
Em suma, desacoplar a função de retorno de chamada de sucesso da função ajax para que mais tarde você possa adicionar seus próprios manipuladores sem modificar o código original (padrão do observador).
Encontre informações mais detalhadas aqui: https://stackoverflow.com/a/14754681/1049184
success:
usado como parâmetro e .success()
como método em a jqXHR
. Este último está sendo descontinuado, mas o primeiro é o que o OP estava perguntando.
success
só dispara se a chamada AJAX for bem-sucedida, ou seja, em última análise, retorna um status HTTP 200. error
dispara se falhar e complete
quando a solicitação for concluída, independentemente do sucesso.
No jQuery 1.8 no jqXHR
objeto (retornado por $.ajax
) success
foi substituído por done
, error
por fail
e complete
poralways
.
No entanto, você ainda deve conseguir inicializar a solicitação AJAX com a sintaxe antiga. Então, eles fazem coisas semelhantes:
// 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"); });
Esta mudança é para compatibilidade com o objeto adiado do jQuery 1.5 . Adiado (e agora Promise
, que tem suporte total ao navegador nativo no Chrome e FX) permite que você encadeie ações assíncronas:
$.ajax("parent").
done(function(p) { return $.ajax("child/" + p.id); }).
done(someOtherDeferredFunction).
done(function(c) { alert("success: " + c.name); });
Essa cadeia de funções é mais fácil de manter do que uma pirâmide aninhada de callbacks que você obtém success
.
No entanto, observe que done
agora está obsoleto em favor da Promise
sintaxe que usa then
:
$.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); });
Vale a pena adotar isso porque async
e await
promessas de extensão aprimorou a sintaxe (e tratamento de erros):
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
, no jQuery 1.8 que foi substituído por done
. Eles funcionam da mesma maneira, mas done
são mais consistentes com o resto do jQuery.
.done
Foi uma tentativa inicial (e agora sem saída) da jQuery no que se tornou Promise
e agora tem um suporte de linguagem bastante abrangente. Em novos projetos, eu usaria const response = await fetch(...)
.
.success()
só é chamado se o seu servidor web responder com um cabeçalho HTTP 200 OK - basicamente quando está tudo bem.
Os callbacks anexados a done () serão disparados quando o adiado for resolvido. Os callbacks anexados a fail () serão disparados quando o adiado for rejeitado.
promise.done(doneCallback).fail(failCallback)
.done() has only one callback and it is the success callback
success
é o retorno de chamada que é invocado quando a solicitação é bem-sucedida e faz parte da $.ajax
chamada. done
é na verdade parte do jqXHR
objeto retornado por $.ajax()
e substitui success
no jQuery 1.8.