J'ai codé comme ceci:
$.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID },
success: function (data) {
$('#CityID').html(data);
},
error: function (ajaxContext) {
alert(ajaxContext.responseText)
}
});
Mais quand je regarde la .ajax()
documentation jQuery à la fin, il semble suggérer que je devrais coder comme ceci ci-dessous ou du moins cela suggère d'ajouter un .done()
et un .fail()
:
var request = $.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID }
});
request.done(function (data) {
xxx;
});
request.fail(function (jqXHR, textStatus) {
xxx;
});
Mettre à jour
Si je code comme ça, est-ce la même chose ou y a-t-il un avantage à le diviser en trois?
$.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID }
}).done(function (data) {
xxx;
}).fail(function (jqXHR, textStatus) {
xxx;
});
.error
,.success
) qui sont obsolètes au profit du modèle différé plus universel, mais les paramètres de laajax
méthode ne sont pas obsolètes et sont à la fois valides et acceptables - même dans jQuery 1.9 / 2.0! Dans toutes les formes actuelles,ajax
renvoie toujours un différé; éventuellement avec des rappels différés déjà attachés.jqXHR.success = jqXHR.done;
.success
,fail
,always
.Je veux ajouter quelque chose sur le post de @Michael Laffargue:
jqXHR.done()
est plus rapide!jqXHR.success()
ont un certain temps de chargement dans le rappel et peuvent parfois surcharger le script. Je trouve cela difficile avant.METTRE À JOUR:
En utilisant
jqXHR.done()
,jqXHR.fail()
etjqXHR.always()
vous pouvez mieux manipuler avec la requête ajax. En général, vous pouvez définir ajax dans une variable ou un objet et utiliser cette variable ou cet objet dans n'importe quelle partie de votre code et obtenir des données plus rapidement. Bon exemple:la source
En mots simples
s'il obtient le info.text, alors il alerte et quelle que soit la fonction que vous ajoutez ou, le cas échéant, comment il est impossible de récupérer info.text du serveur, puis alerte ou fonction d'erreur.
la source
Lorsque nous allons migrer JQuery de 1.x vers 2x ou 3.x dans notre ancienne application existante, nous utiliserons .done, .fail au lieu de success, error car JQuery up gradation va être obsolète ces méthodes. Exemple lorsque nous appelons des méthodes Web du serveur, le serveur renvoie des objets de promesse aux méthodes appelantes (méthodes Ajax) et que ces objets de promesse contiennent des méthodes .done, .fail..etc. Voici l'exemple (c'est pour la requête POST de la même manière que nous pouvons construire pour un type de requête comme GET ...)
la source