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

JavaScript Discussion :

[AJAX] Erreur d'appel Ajax


Sujet :

JavaScript

  1. #1
    Membre �prouv�
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : Technophile Web
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par d�faut [AJAX] Erreur d'appel Ajax
    Bonjour,

    J'ai d�velopp� une 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
    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
    /** Use XHR method to bring back what a script display
     * @param The Script URL 
     * @access Public */
    function asynchronousCall(url)
    {
    	var xhr = null;
    	if (window.XMLHttpRequest)
    	{
    	  xhr = new XMLHttpRequest();
    	}
    	else if (window.ActiveXObject) 
    	{
     		try 
      		{ 
        		xhr = new ActiveXObject("Msxml2.XMLHTTP");
      		} 
      		catch (e) 
      		{
         		try 
         		{ 
            		xhr = new ActiveXObject("Microsoft.XMLHTTP");
         		} 
         		catch (e) 
         		{
           			window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest.");
         		}
      		} 
    	}
    	xhr.onreadystatechange = function()
    	{
    		if (xhr.readyState==4)
    		{
    			if (xhr.status==200)
    			{
    				return xhr.responseXML;	
    			}
    		}
    	}
    	xhr.open("GET",url,true)
    	xhr.send(null);
    }
    mais voila lorsque je tente de r�afficher le r�sulta de cette fonction (normallement ce que le return me fournis), j'ai le droit � un undefined
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    var ajax = asynchronousCall('./web-services/list-companies.php');
    	alert(ajax);
    ajax = undefined

    ma question est simple, pourquoi ?

  2. #2
    Membre r�gulier
    Profil pro
    Inscrit en
    D�cembre 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 10
    Par d�faut
    Tu travailles en mode Asynchrone, JE te conseillerais de faire un
    (� la place du return)
    comme �a, tu peux facilement situer ton probl�me.
    A mon avi, ta fonction (asynchronousCall) ne retourne rien. � v�rifier.

  3. #3
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par d�faut
    A mon avi, ta fonction (asynchronousCall) ne retourne rien. � v�rifier.
    C'est ca.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	xhr.onreadystatechange = function()
    	{
    		if (xhr.readyState==4)
    		{
    			if (xhr.status==200)
    			{
    				return xhr.responseXML;	
    			}
    		}
    	}
    Le return est dans la fonction interne d�finie sur le xhr.onreadystatechange, donc tu ne peux pas retourner de r�sultat � l'ext�rieur de ta fonction.

  4. #4
    Membre �prouv�
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : Technophile Web
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par d�faut
    compirs

    javascript n'a pas le m�me fonctionnement que PHP (tu pe faire des return dans les fonctions, dans des boucles, dans des conditions ...)

    donc j'initalise une variable toReturn (par exemple)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var toReturn = xhr.responseXML
    puis � la fin de mon code, je fais un
    EDIT : et bien non j'ai tout faux
    m�me si je d�clare ma variable javascript cens�e r�cup�rer le XML au d�but (je l'intialise � null), elle est tjrs null

  5. #5
    Membre r�gulier
    Profil pro
    Inscrit en
    D�cembre 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 10
    Par d�faut
    Citation Envoy� par sliderman Voir le message
    compirs

    javascript n'a pas le m�me fonctionnement que PHP (tu pe faire des return dans les fonctions, dans des boucles, dans des conditions ...)

    donc j'initalise une variable toReturn (par exemple)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var toReturn = xhr.responseXML
    puis � la fin de mon code, je fais un
    EDIT : et bien non j'ai tout faux
    m�me si je d�clare ma variable javascript cens�e r�cup�rer le XML au d�but (je l'intialise � null), elle est tjrs null
    je crois que tu n'a pas encore compris le fonctionnement du truc.
    si tu veux vraiment r�cup�rer la valeur de ton XML, il faut surement faire du synchrone
    et dans ce cas, �a devrait �tre bon.
    en gros (je ne sais pas si le 'get' supporte, mais le 'post' oui)
    et derri�re, tu recup�re directement ton mais quand ce n'est pas 'synchrone', tu ne sais pas en fait que la requ�te a �t� ex�cut�e.

    C'est pour cela qu'on fait son tratirement dans la fonction 'handler'
    en gros quand tu fais:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    xhr.onreadystatechange = function()
    	{
                   // blblallalala
     
    //alert('etc');
    //crer tes divs;
    //set ton_InnerHTML
    /etc ...
    	}
    Sachant seulement que ton Ajax fonctionne en 'asynchrone', le fonctionnement que tu d�crit serait bien normal et heureusement.

  6. #6
    Membre �prouv�
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : Technophile Web
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par d�faut
    Citation Envoy� par THE Drog Voir le message
    je crois que tu n'a pas encore compris le fonctionnement du truc.
    si tu veux vraiment r�cup�rer la valeur de ton XML, il faut surement faire du synchrone
    et dans ce cas, �a devrait �tre bon.
    en gros (je ne sais pas si le 'get' supporte, mais le 'post' oui)
    et derri�re, tu recup�re directement ton mais quand ce n'est pas 'synchrone', tu ne sais pas en fait que la requ�te a �t� ex�cut�e.

    C'est pour cela qu'on fait son tratirement dans la fonction 'handler'
    en gros quand tu fais:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    xhr.onreadystatechange = function()
    	{
                   // blblallalala
     
    //alert('etc');
    //crer tes divs;
    //set ton_InnerHTML
    /etc ...
    	}
    Sachant seulement que ton Ajax fonctionne en 'asynchrone', le fonctionnement que tu d�crit serait bien normal et heureusement.
    je n'ai pas compris pourquoi tu me parle de 'synchrone'.
    En fait, ce que je veux faire c'est pas une fonction qui execute un apel XHR (pour un traitement), mais plutot une fonction qui execute un XR et me retour son responseXML (fonction g�n�rique)

  7. #7
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par d�faut
    Comme dit plus haut, c'est impossible de faire un return, que tu sois en synchro ou en asynchro.

    J'avais donn� une bidouille ici pour arriver � avoir un r�sultat sensiblement pareil, mais c'est vraiment � utiliser dans des cas particuliers...

Discussions similaires

  1. Erreur sur appel Ajax
    Par lenalg dans le forum AJAX
    R�ponses: 3
    Dernier message: 03/04/2017, 14h06
  2. [AJAX] Appel Ajax dans un appel Ajax avec JS et PHP
    Par Gajilidd dans le forum AJAX
    R�ponses: 10
    Dernier message: 27/08/2010, 12h36
  3. [AJAX] Requetes HTTPS et ajax = erreur 400?
    Par bambou dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 08/02/2007, 16h59
  4. [AJAX] Erreur 404 avec Ajax
    Par GuileIzback dans le forum G�n�ral JavaScript
    R�ponses: 6
    Dernier message: 15/01/2007, 11h58
  5. [AJAX] Effectuer plusieur appel ajax
    Par shwin dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 06/10/2005, 16h40

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