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 lorsque je regarde la documentation jQuery [.ajax()
][1] à la fin, elle semble suggérer que je devrais coder comme ceci ci-dessous ou au moins elle 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;
});
[1] : http://api.jquery.com/jQuery.ajax/
Mise à jour
Si je code comme ça, est-ce que ça revient au même 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;
});
Comme indiqué par l'utilisateur 2246674, l'utilisation de success
et error
comme paramètre de la fonction ajax est valide.
Pour être cohérent avec la réponse précédente, la lecture de la doc:
Deprecation Notice:
Les callbacks jqXHR.success(), jqXHR.error(), et jqXHR.complete() seront dépréciés dans jQuery 1.8. Pour préparer votre code à leur suppression éventuelle, utilisez plutôt jqXHR.done(), jqXHR.fail() et jqXHR.always().
Si vous utilisez la fonction de manipulation de callback (en utilisant le method-chaining par exemple), utilisez .done()
, .fail()
et .always()
au lieu de success()
, error()
et complete()
.
Je veux ajouter quelque chose sur le post de @Michael Laffargue's:
jqXHR.done()
est plus rapide !
jqXHR.success()
a un certain temps de chargement dans le callback et peut parfois surcharger le script. J'ai découvert cela de manière difficile auparavant.
UPDATE:
En utilisant jqXHR.done()
, jqXHR.fail()
et jqXHR.always()
vous pouvez mieux manipuler les requêtes 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. Un bon exemple:
/* Initialize some your AJAX function */
function call_ajax(attr){
var settings=$.extend({
call : 'users',
option : 'list'
}, attr );
return $.ajax({
type: "POST",
url: "//exapmple.com//ajax.php",
data: settings,
cache : false
});
}
/* .... Somewhere in your code ..... */
call_ajax({
/* ... */
id : 10,
option : 'edit_user'
change : {
name : 'John Doe'
}
/* ... */
}).done(function(data){
/* DO SOMETHING AWESOME */
});
En termes simples
$.ajax("info.txt").done(function(data) {
alert(data);
}).fail(function(data){
alert("Try again champ!");
});
S'il obtient l'info.text, alors il alertera et la fonction que vous ajoutez ou s'il est incapable de récupérer l'info.text du serveur, alors il alertera ou la fonction d'erreur.