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] Passage de variables


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 11
    Par défaut [AJAX] Passage de variables
    Bonjour,

    J'imagine que c'est très basique pour la plupart d'entre vous, mais j'essaie de mettre en place un modeste chat Ajax/PHP pour mon site et je rencontre un souci ...

    Pour le moment, en visible,
    J'ai une page "test.php" qui englobe 2 divs rafraîchis toutes les 5 secondes :
    - liste des connectés (statut géré avec load et unload, ça marche bien)
    - conversations (affiche juste le nom des connectés avec qui on a ouvert une conversation privée)

    J'aimerais qu'au clic sur le nom d'un connecté (dans le DIV de la liste des connectés), une page "ins_conversation.php" (qui gère les contrôles et la création d'une nouvelle conversation entre 2 membres et qui est déjà développée) soit appelée, ce qui permettrait ainsi à ma DIV des conversations d'afficher le nom de la personne avec qui on souhaite parler.

    Si mes explications ne sont pas claires, pour vous représenter l'affaire, imaginez une liste des connectés dans une colonne gauche, et sur la droite une liste d'onglets avec le nom des connectés avec qui ont discute (DIV conversations) et en dessous l'espace pour afficher et envoyer les messages (qui viendra ensuite).

    Quelqu'un pourrait-il m'aiguiller ?

    Merci !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 11
    Par défaut
    Je précise quand même que ma page "ins_conversations.php" a besoin de l'identifiant du connecté à qui l'on veut parler pour pouvoir ajouter la conversation en base de données.

    Je souhaite donc qu'au clic sur le nom d'un connecté dans la liste, un appel équivalent à "ins_conversation.php?idmembre=$var" mais invisible, se produise !

    J'ai donc testé une fonction avec un appel à la page via une requête xmlhttprequest, mais rien ne se passe...

    Voici mon code :

    Côté html/php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<a href='javascript:conv(".$idmembre.");'>".$data_connectes['Li_membre']."</a>
    Côté javascript/ajax
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script language="text/javascript">
        function conv(id){    
          try{var requete_ajax = new ActiveXObject("Microsoft.XMLHTTP");}
          catch(e){var requete_ajax = new XMLHttpRequest();}
          var conv = id;      
          requete_ajax.open('GET', 'ins_conv.php?conv='+conv, true);
          requete_ajax.send(null);
        }
      </script>

  3. #3
    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
    Plusieurs remarques en passant :

    > la propriété href n'est pas faite pour insérer du JS : utilise onclick et enlève la mention "javascript:"

    > utiliser une structure try/catch pour faire un if/else me semble inutile et dangereux... ton code suppose que l'utilisation d'un autre navigateur qu'IE est une *erreur inattendue* ??! (moi qui croyais que c'était IE qui était une erreur... )
    J'ai donc testé une fonction avec un appel à la page via une requête xmlhttprequest, mais rien ne se passe...
    Quel événement attends-tu après cet appel ? (parce qu'étant donné qu'il n'y a pas de traitements prévus au retour (que l'on écrit habituellement dans le code de définition de la propriété onreadystatechange de l'objet de transport), l'appel AJAX va peut-être effectivement exécuter une page PHP sur le serveur qui pourra y déclencher différentes actions, notamment des interactions avec ta BDD, mais il est normal que rien ne se passe dans le navigateur du client ^^
    Dans le doute, montre-nous un peu le code de ta partie AJAX, sait-on jamais...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 11
    Par défaut
    Merci Romain pour ta réponse-question et tes remarques.

    J'ai finalement pu trouver ma solution... l'erreur venait d'une fermeture de condition oubliée dans le fichier PHP qui faisait planter l'ensemble naturellement. Le javascript n'était pas concerné !

    J'ai finalement utilisé ce script :
    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
    <script language="javascript">
     
        function mafonction (args){    	
          var _data = "mavar="+args;
          var xhr_object = null;                 	
        	if(window.XMLHttpRequest){xhr_object = new XMLHttpRequest();}
        	else if(window.ActiveXObject){xhr_object = new ActiveXObject("Microsoft.XMLHTTP");}
        	else { 
        	 alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
           return; 
        	} 
        	xhr_object.open("POST", "mapage.php", true);
        	xhr_object.onreadystatechange = function() {                
            if(xhr_object.readyState == 4) {         
              //eval(xhr_object.responseText);
            }
        		return xhr_object.readyState;
        	} 
        	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        	xhr_object.send(_data);                                                                 
        }   
     
        </script>
    J'ai placé l'eval en commentaire car ma page PHP ne renvoie pas de réponse particulière pour le moment (elle exécute un insert qui se voit immédiatement par ailleurs, dû au rafraîchissement des DIVs)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/09/2009, 14h23
  2. [AJAX] passage de variable
    Par ano74 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/07/2007, 08h36
  3. [AJAX] Passage de variable avec espace blanc et insecam
    Par ascito dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/07/2007, 11h51
  4. [AJAX] Passage de variable en ajax
    Par carlatocer dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/02/2007, 14h46
  5. [AJAX] Passage d'une variable très longue avec AJAX
    Par Figaro83 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/09/2006, 16h53

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