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

Comment récupérer le texte de réponse AJAX de manière fiable dans Prototype.js ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-13 22:26:12420parcourir

How to Retrieve AJAX Response Text Reliably in Prototype.js?

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!

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