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] passer plusieurs variables et renvoyer du html


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Par défaut [AJAX] passer plusieurs variables et renvoyer du html
    Bonjour à tous,

    Je découvre l'Ajax, car j'ai enfin un peu le temps de m'y mettre, et je souhaiterais comme exercice faire un truc tout simple :

    J'ai un lien html qui affiche le genre d'un membre : homme ou femme

    Si on clique sur ce lien et qu'on est un homme ca le change en femme et vice et versa.

    Aussi lorsque je clique sur le lien, ca met à jour la base de données, en envoyant deux variables : l'ID du membre et le genre

    Voici ce que j'ai fait pour l'instant :

    Dans mon head :

    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
    	<script type="text/javascript">
     
    		function getXhr(){
    			var xhr = null; 
    			if(window.XMLHttpRequest) // Firefox et autres
    			   xhr = new XMLHttpRequest(); 
    			else if(window.ActiveXObject){ // Internet Explorer 
    			   try {
    						xhr = new ActiveXObject("Msxml2.XMLHTTP");
    					} catch (e) {
    						xhr = new ActiveXObject("Microsoft.XMLHTTP");
    					}
    			}
    			else { // XMLHttpRequest non supporté par le navigateur 
    			   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    			   xhr = false; 
    			} 
    			return xhr;
    		}
     
    		function genre(){
    				var xhr = getXhr()
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						alert(xhr.responseText);
    					}
    				}
    				xhr.open("GET","ajax_membre_genre.inc.php?",true);
    				xhr.send(null);
    			}
     
     
    		</script>
    mon html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="contenu_genre" style="float:left;">
    <a href="#" onclick="genre();" class="lienGras">Homme</a></div>

    et mon php :

    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
    $sSql="
    			UPDATE
    				matable
    			SET
    				genre= ?
    			WHERE
    				id_membre = ?
    		";
    		$oSth = $GLOBALS['BDD']->prepare($sSql);
    		$oSth->execute(array($_GET['genre'], $_GET['id_membre']));
     
    		switch($_GET['genre']){
     
    			case 0 :
    				// le membre est un homme
    				echo '<a href="#" onclick="genre();" class="lienPetitNoir">homme</a>';
    			break;
     
    			case 1 :
    				// le membre est une femme
    				echo '<a href="#" onclick="genre();" class="lienGras">femme</a>';
    			break;
    		}
    le php fnctionne, mais ce que je n'arrive pas a mettre en place c'est la liaison entre ces éléments, j'ai cherché un peu partout sur le forum, mais n'est pas trouvé d'explications.

    Merci de votre aide

  2. #2
    Membre confirmé Avatar de simotaqi
    Inscrit en
    Février 2010
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 144
    Par défaut
    bonjour ,
    pour faire , tu doit mettre un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('contenu_genre').innerHTML=xhr.responseText;
    a la place de alert

    ainsi, homme va etre changer selon la respose du code php


  3. #3
    Membre confirmé Avatar de simotaqi
    Inscrit en
    Février 2010
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 144
    Par défaut
    tu dois egalement specifier les variables $_GET['genre'] et $_GET['id_genre'] de ton code php

    essaie plutot:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xhr.open("GET","ajax_membre_genre.inc.php?genre="+valeurgenre+"&id_genre="+valeurid,true);
    a la place de xhr.open("GET","ajax_membre_genre.inc.php?",true);

    car tu si tu travail avec la method get , tu dois passer les variable par ton url

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Attention aussi à deux écueils assez courants :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="genre();" class="lienGras">Homme</a></div>
    Tu dois mettre un return false après l'appel de la fonction, sinon, le comportement normal du lien sera lancé, ce qui va provoquer un rechargement de la page et casser la requête :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="genre();return false;" class="lienGras">Homme</a></div>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    switch($_GET['genre']){
     
    	case 0 :
    		// le membre est un homme
    		echo '<a href="#" onclick="genre();" class="lienPetitNoir">homme</a>';
    	break;
     
    	case 1 :
    		// le membre est une femme
    		echo '<a href="#" onclick="genre();" class="lienGras">femme</a>';
    	break;
    }
    En faisant comme ça, lorsque tu intègreras le retour dans ta page, le code JavaScript (contenu de l'attribut onclick) ne sera pas évalué et donc pas fonctionnel.
    Il faut donc renvoyer uniquement le contenu du lien (homme ou femme) et intégrer cela directement dans le lien existant, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('contenu_genre').getElementsByTagName('a')[0].innerHTML=xhr.responseText;
    voire en ajoutant un id à ton lien (la meilleure solution).
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Par défaut
    Merci pour toutes ces réponses que j'ai misent en place.
    Bon c'est pas encore ca, mais plutôt que de vous demander d'ou le problème peut venir, j'aimerai essayer de trouver, c'est comme ca que ca rentre
    Mais autant en php, pas de soucis, mais en ajax, comment faites vous pour débuger ?
    Sachant qu'au préalable j'ai testé le php qui marche sans soucis ?

    Avez-vous des petites techniques qui me feront surement progresser ?

    Merci encore.

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir,
    Mais autant en php, pas de soucis, mais en ajax, comment faites vous pour débuger ?
    Installes Firebug sur ton firefox.
    Montres nous ton nouveau code pour qu'on puisse t'aider.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2007, 15h40
  2. Passer plusieurs variables
    Par god_enel dans le forum Langage
    Réponses: 13
    Dernier message: 05/02/2007, 16h03
  3. [SQL] Passer plusieurs variables à l'aide des checkbox
    Par urbalk dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/10/2006, 19h32
  4. [XSL] Passer une variable a une balise HTML dans un fichier
    Par poseidon2 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 09/03/2006, 16h39

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