IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Retour de valeur


Sujet :

AJAX

  1. #1
    Membre éclairé Avatar de hedgehog
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut [AJAX] Retour de valeur
    Bonjour,

    Je sais que la question porte sur Ajax mais je pense que le problème est purement Javascript.

    Voici ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function requestGETResponse(pageURL) {
       var xhrObject=createXHRObject(); // Création d'un objet xmlHTTPRequest
       xhrObject.onreadystatechange=function() {
          if(xhrObject.readyState==4) {
             if(xhrObject.status==200) {
                return xhrObject.responseText;
             } else {
                return false;
             }
          }
       };
       xhrObject.open("GET", pageURL,  true); 
       xhrObject.send(null);
    }
    Je fournis à ma fonction, l'url de la page pageURL (PHP dans mon cas) à éxécuter.

    Le soucis est que, le retour souhaitée de la fonction est lui-même imbriquée dans une autre fonction : xhrObject.onreadystatechange=function() donc lorsque j'essaie de récupérer le retour de la fonction requestGETResponse(), la variable est undefined.

    Est-il possible de faire transiter la donnée afin de la récupérer en sortie de requestGETResponse() ? Si oui, comment ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Non, c'est vraiment le raisonnement qui caractérise AJAX, même si ça s'écrit en javascript comme tout code AJAX ^^

    Le problème est très intéressant mais se résoud en utilisant des fonctions de callback, vois cet exemple pour t'en convaincre :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    function appel_ajax_standard(url, params, options)
    {
    	options = options || { }; // si option non passé on crée un objet vide
    	...    
    	try
    	{
    		var xhr = getXhr();
    		xhr.onreadystatechange = function()
    		{
    			if (xhr.readyState == 4)
    			{
    				if (xhr.status == 200)
    				{
    					if(options.onSuccess) options.onSuccess(xhr.responseText, xhr); // passer xhr peut aussi être pratique
    				}
    				else
    				{
    					if(options.onFailure) options.onFailure(xhr);
    				}
    			}
    		}
    		xhr.open("GET", (url + "?" + params), true);
    		xhr.send(null);
    		return true;
    	}
    	catch (e)
    	{
    		return false;
    	}
    }
    // exemple d'appel :
    var monElement = document.getElementById(idElement);
    var monUrl = "./repertoire/page.php";
    var resultat_ajax = appel_ajax_standard(monUrl, "superParam=chouetteValeur", { 
      onSuccess: function(retour) { 
    	monElement.appendChild(document.createTextNode(retour));
      },
      onFailure: ajaxErrorHandler
    });
    if (!resultat_ajax) { alert("Une défaillance ajax a empêché ce traitement de s'effectuer. Veuillez contacter votre ragondin d'appartement."); }
     
    function ajaxErrorHandler(xhr) {
      alert("Erreur Ajax " + xhr.status); // par exemple
    }
    ...tiré de ce post (merci encore à marcha et bovino pour cet accouchement )

  3. #3
    Membre éclairé Avatar de hedgehog
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Merci de ta réponse

    Après réadaptation, résolution de mon soucis

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Retour de valeur AJAX
    Par Snyper dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/03/2009, 10h59
  2. [AJAX] Retour de valeur depuis le JS
    Par lodan dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/10/2006, 08h13
  3. [INFOS][AJAX]Retour d'expérience
    Par SEMPERE Benjamin dans le forum Servlets/JSP
    Réponses: 17
    Dernier message: 28/09/2006, 16h43
  4. [Ajax] Recupérer la valeur d'une liste
    Par Kaimann dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/02/2006, 18h22
  5. retour de valeur
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/09/2005, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo