Récupération du texte de réponse AJAX dans un prototype
Dans le développement AJAX basé sur un prototype, l'obtention du texte de réponse peut être difficile. Une approche courante consiste à utiliser le rappel onComplete, comme indiqué ci-dessous :
somefunction: function() { var result = ""; myAjax = new Ajax.Request(postUrl, { method: 'post', postBody: postData, contentType: 'application/x-www-form-urlencoded', onComplete: function(transport) { if (200 == transport.status) { result = transport.responseText; } } }); return result; }
Cependant, cette approche aboutit souvent à une variable de résultat vide en raison de la nature asynchrone des requêtes AJAX. Le rappel onComplete est invoqué une fois la fonction somefunction terminée, ce qui entraîne une incompatibilité de timing.
Pour résoudre ce problème, une fonction de rappel doit être transmise à somefunction en tant que paramètre. Ce rappel sera exécuté lorsque l'opération AJAX sera terminée, comme démontré dans le code corrigé ci-dessous :
somefunction: function(callback){ var result = ""; myAjax = new Ajax.Request(postUrl, { method: 'post', postBody: postData, contentType: 'application/x-www-form-urlencoded', onComplete: function(transport){ if (200 == transport.status) { result = transport.responseText; callback(result); } } }); } somefunction(function(result){ alert(result); });
Dans ce scénario, la fonction de rappel est invoquée dans le gestionnaire onComplete, garantissant que le texte de réponse est disponible lorsque la fonction principale est terminée. Le rappel transmis peut ensuite utiliser le texte de réponse pour un traitement ultérieur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!