Maison >interface Web >js tutoriel >Comment puis-je récupérer le texte de réponse AJAX de manière synchrone dans Prototype.js ?

Comment puis-je récupérer le texte de réponse AJAX de manière synchrone dans Prototype.js ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-26 04:32:131029parcourir

How Can I Retrieve AJAX Response Text Synchronously in Prototype.js?

Récupération asynchrone du texte de réponse JavaScript et XML (AJAX)

Dans le contexte du développement AJAX basé sur un prototype, la récupération du texte de réponse pose un problème défi. Considérez le code suivant :

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;
}

Dans cet extrait, la fonction "onComplete" est exécutée de manière asynchrone, longtemps après la fin de "someFunction". Cela se traduit par une variable "result" vide.

Pour pallier à cela, une solution est proposée dans la réponse fournie : introduire une fonction de rappel dans la "someFunction" en paramètre. Ce rappel sera invoqué une fois l'opération AJAX terminée.

Voici le code modifié :

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 cas, "someFunction" prend un rappel en paramètre et l'appelle avec le texte de réponse. Dans l'exemple, la fonction de rappel affiche une alerte avec le texte récupéré. Ce mécanisme garantit que le texte de réponse est disponible pour les fonctions suivantes en cas de besoin.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn