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] Appel multiple sur la même fonction


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut [AJAX] Appel multiple sur la même fonction
    Bonjour,

    J'ai un problème en Php et Javascript, et je ne parviens pas à trouver des réponses sous Google.

    Je fais un appel Ajax et la réponse attendue est générée par un autre appel Ajax.
    Mon premier appel Ajax est fait 3 fois dans la même page avec un paramètre différent. Ces appels permettent de remplir grâce à des innerHtml des divisions.

    Après plusieurs tests, les retours de la fonction avec les paramètres différents retournent le bon résultat.
    Appelé trois fois séparément (pas dans la même page), le résultat attendu est là, par contre appelé trois fois dans la même page, les trois appels retournent le même résultat (le dernier).

    Le code sera surement plus clair:

    JS :
    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
     
    function getUpload(project, cr, type, login){ 
        if (window.XMLHttpRequest) // Mozilla, Safari, ... 
            xmlhttp = new XMLHttpRequest(); 
        else if (window.ActiveXObject) // IE 
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     
     
        xmlhttp.open("GET", "TestUpload.php?project="+project+"&cr="+cr+"&type="+type+"&login="+login+"&random="+Math.random()); 
        xmlhttp.onreadystatechange=function() 
        { 
            if (xmlhttp.readyState == 4) 
            { 
                // select the section to display 
                if(type == ""){ 
                    var div = "attachedFiles"; 
                }else if(type == "solution"){ 
                    var div = "attachedFilesSolution"; 
                }else if(type == "whereUsed"){ 
                    var div = "attachedFilesWhereUsed"; 
                } 
     
                document.getElementById(div).innerHTML = xmlhttp.responseText; 
     
            } 
        }; 
        xmlhttp.send(null); 
    }
    On voit donc ici que mes trois appels sont donc redirigé vers leur div respectives

    Voici le code généré en HTML:
    Code xhtml : 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
     
    <div id='attachedFiles' style='text-align: left;'> 
        <script type="text/javascript"> 
            getUpload("156", "", "","zztest"); 
        </script> 
    </div>
    <div id='attachedFilesSolution' style='text-align: left;'> 
        <script type="text/javascript"> 
            getUpload("156", "", "solution","zztest"); 
        </script> 
    </div>
    <div id='attachedFilesWhereUsed' style='text-align: left;'> 
        <script type="text/javascript"> 
            getUpload("156", "", "whereUsed","zztest"); 
        </script> 
    </div>

    Voilà plusieurs jours que je bloque dessus et c'est un problème relativement urgent.

    Merci d'avance pour votre aide .

  2. #2
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    J'ai pas eu le temps de lire le code.

    Mais a priori tu utilises 3 fois la même variable de retour.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut
    Oui lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      document.getElementById(div).innerHTML = xmlhttp.responseText;
    la variable div est utilisé pour tout les retours, mais je change cette valeur en fonction d'un paramètre passé a la fonction.

    Dois-je envoyer mes requêtes de façon synchrones? Si oui comment?

  4. #4
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 099
    Par défaut
    Tes trois div ont le même id…
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut
    Hum oui en effet erreur de ma part lors de mon post, le code est bon

    J'ai édité mon post

  6. #6
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    As tu essayé de vider type dans getUpload() ?
    Après ton switch bien entendu

  7. #7
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 099
    Par défaut
    C’est parce que xmlhttp est une variable globale (oublié un var ?)
    Du coup y’a écrasement et ça produit des trucs bizarres…
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

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

Discussions similaires

  1. [AJAX] deux autocomplétion sur une même page
    Par Swapyyy dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 10/07/2008, 15h45
  2. Requête avec conditions multiples sur le même champ
    Par skerdreux dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/06/2008, 19h15
  3. Accès multiple sur une même table
    Par ravaid dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/04/2008, 14h09
  4. Accès multiple sur une même table
    Par ravaid dans le forum Développement
    Réponses: 3
    Dernier message: 18/04/2008, 13h27
  5. [AJAX] Plusieurs autocomplétion sur la même page
    Par Death83 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/11/2007, 11h19

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