Suite à mon billet de la semaine dernière à propos du AJAX synchrone, j’ai décidé de faire un petit followup.
Nous sommes donc tous d’accord pour dire que faire de l’AJAX synchrone est mauvais. Sauf que dans la vraie vie, il faut trouver des solutions qui fonctionnent en pratique, pas seulement en théorie. Considérons ce code Javascript effectuant une requête AJAX synchrone :
function validerServeur(valeur) {
$.ajax({
url: "valider.php",
data: { "donnees": valeur },
async: false,
success: function(retour) {
valide = (parseInt(retour) === 1) ? true : false;
}
})
}
if (validerServeur("blanquette")) {
alert("La valeur est bonne!");
}
Il fonctionne très bien ce code, right? Le seul problème est qu’il gèle le navigateur si le serveur ne répond pas ou est moindrement lent. La solution? Utiliser un callback que l’on va passer en argument. Et on peut le faire en AJAX asynchrone, ce qui ne gèle pas le navigateur.
function validerServeur(valeur, callback) {
$.ajax({
url: "valider.php",
data: { "donnees": valeur },
success: function(retour) {
if (parseInt(retour) === 1) {
callback();
}
}
})
}
validerServeur("blanquette", function() { alert("La valeur est bonne!"); });
J’utilise cette technique de plus en plus souvent, particulièrement lorsque je dois faire des requêtes AJAX suivies d’autres instructions. Avez-vous une solution alternative pour ce genre de problématique?
Aucun commentaire n'a été posté pour ce billet.