attendre un rappel jquery ajax de la fonction d'appel
J'ai passé en revue un grand nombre de réponses à ce type de question et maintenant, je suis confus quant à la meilleure manière. Étant donné les dernières jquery, je suis désireux de
- De l'appel d'une fonction ajax
- ne ajax traitement (succès ou d'erreur) //fonctionne très bien
- sur le succès ou d'erreur de retour de l'état à la fonction d'appel pour la poursuite du traitement
dans la fonction appelante (doAjax), comment dois-je attendre pour un rappel, puis compléter le traitement de la réussite ou de l'erreur (dans ce cas, son succès effacer un formulaire, sur l'erreur de le garder comme l'est)
Merci pour tous les conseils,
Art
[MODIFIER]
Il y avait une faute de frappe que vous les gars repéré, l'appel doit avoir été doAnAjax pas doAjax
$(function () {
doAnAjax(Url, data, function (myRtn) {
if (myRtn == "success") {
resetForm($('#myForm'));
resetForm($('form[name=addChlGrp]'));
} else {
$('.rtnMsg').html("Opps! Ajax Error");
}
});
});
function doAnAjax(newUrl, data) {
$.ajax({
url: newUrl,
async: true,
dataType: 'html',
beforeSend: function () {
$('.rtnMsg').html("<img src=_cssStyleImg_-A-loading.gif>");
},
type: "GET",
data: data,
cache: false,
success: function (data, textStatus, xhr) {
$('.rtnMsg').html(data);
myRtnA = "Success"
return myRtnA;
},
error: function (xhr, textStatus, errorThrown) {
$('.rtnMsg').html("opps: " + textStatus + " : " + errorThrown);
myRtnA = "Error"
return myRtnA;
}
});
}
source d'informationauteur art vanderlay
Vous devez vous connecter pour publier un commentaire.
Vous avez eu recours à une fonction de rappel. Essayez cette ci-dessous:
Comme mentionné précédemment, à l'aide de Rappels.
Vous pouvez ensuite passer à toute fonction de
process
et il sera appelé sur la réussite ou de l'erreur.La réponse est que vous n'avez pas, mais il est facilement réalisable. L'idée d'AJAX est il est asynchrone, donc la UN JAX. Cela signifie que la fonction qui, à l'origine des appels de votre ajax ne va pas attendre pour elle de remplir et de la place que le travail soit terminé après un appel ajax devrait être dans la réussite ou de gestionnaires d'erreurs.
Si vous besoin de quelque chose pour être synchrone, vous pouvez modifier votre drapeau de
async:true
àasync:false
mais alors il devient vraiment un SJAX appel (même pas sûr que le terme existe, mais, techniquement, il n'est pas un appel AJAX plus).Découvrez "derferred" en jquery. L'exemple ci-dessous utilise différé.fait avec async éteint, et semble fonctionner pour moi.!