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.
successsó dispara se a chamada AJAX for bem-sucedida, ou seja, em última análise, retorna um status HTTP 200. errordispara se falhar e completequando a solicitação for concluída, independentemente do sucesso.
No jQuery 1.8 no jqXHRobjeto (retornado por $.ajax) successfoi substituído por done, errorpor faile completeporalways .
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 doneagora está obsoleto em favor da Promisesintaxe 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 asynce awaitpromessas 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 donesão mais consistentes com o resto do jQuery.
.doneFoi uma tentativa inicial (e agora sem saída) da jQuery no que se tornou Promisee 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 $.ajaxchamada. doneé na verdade parte do jqXHRobjeto retornado por $.ajax()e substitui successno jQuery 1.8.