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] Est-il possible de renvoyer deux retour en AJAX ?


Sujet :

AJAX

  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut [AJAX] Est-il possible de renvoyer deux retour en AJAX ?
    Bonjour tout le monde,

    J'aimerais savoir si il est possible de renvoyer deux éléments en ajax ?

    Je m'explique :

    J'aimerais renvoyer un entier et une chaine de caractère, j'utilise donc ce code :

    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
    <?php
    //Permet d'afficher les images dans la page principale quand le user choisit une lettre erronée
     
    $conn = mysql_connect("localhost","root","mdp"); 
    $db=mysql_select_db("EICE", $conn);
     
    $sql_nouveau_mot = "SELECT Avancement_Mot FROM mots WHERE ID = " .$_POST['ID']." ";
    //echo $sql_nouveau_mot;
    $req_nouveau_mot = mysql_query($sql_nouveau_mot);
    $nouveau_mot_a_afficher = mysql_fetch_array($req_nouveau_mot);
     
    echo $nouveau_mot_a_afficher['Avancement_Mot'];
     
    $sql_image_actuelle = "SELECT Avancement_Image FROM mots WHERE ID = " .$_POST['ID']." ";
    $req_image_actuelle = mysql_query($sql_image_actuelle);
    $image_actuelle = mysql_fetch_array($req_image_actuelle);
     
    echo $image_actuelle['Avancement_Image'];
     
    ?>
    et voici le code javascript :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    function getXhr() {
    	var xhr = null;
     
    	if(window.XMLHttpRequest || window.ActiveXObject) {
    		if(window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP"); //IE
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP"); //IE
    			}
    		} else {
    			xhr = new XMLHttpRequest(); //firefox
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
     
    	return xhr;
    }
    function Affich_picture(ID)
    {
     
    	//alert(diff);
    	/*Ce if me permet de ne pas traiter le code si la valeur choisie est "Choisissez la difficulté"*/
    		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
    			//alert(xhr.readyState);
    			//alert(xhr.status);
    			if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0 ) )
    			{
     
    				//ici, je reçois tout simplement le $_POST['note']
    				image_a_afficher = xhr.responseText;
    				//alert(image_a_afficher);
    				/*ci-dessous document.getElementById('note_originale'+id).value, c'est le champ caché*/
    				if(image_a_afficher < 5)
    				{
     
    					document.getElementById('mot').innerHTML = '<font size="+6" color="#0033FF">' + LeMot + '</font>' ;	
    					document.getElementById('image_pendu').innerHTML = '<img src="images/'+image_a_afficher+'.jpg" alt="potence" width="585" height="360" />' ;	
     
    				}
    				else
    				{
    					document.getElementById('image_pendu').innerHTML = '<img src="images/'+image_a_afficher+'.jpg" alt="potence" width="585" height="360" />' ;
    					document.getElementById('PERDU').innerHTML = '<img src="images/game_over.jpg" alt="potence" width="585" height="360" />' ;	
    					return;
    				}
    				// On se sert de innerHTML pour afficher le bouton
     
    			}
    		}
     
    		//Pour montrer une erreur, je pourrais retirer /PENDU et faire un alert de status
    		xhr.open("POST","AJAX/PENDU/Afficher_Image.php",true);	
    		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
    		xhr.send("ID="+ID);
     
     
     
    }
    Merci d'avance.

    beegees

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Par défaut
    Salut,
    plusieurs solutions:
    - faire deux appels ajax qui te renverrons les deux résultats que tu veux,mais je pense que cette solution ne te va pas et c'est la moins bonne.

    - concaténer les deux résultats et récupérer le tout.
    par exemple tu ferais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $nouveau_mot_a_afficher['Avancement_Mot']."#".$image_actuelle['Avancement_Image'];
    coté serveur.
    Et pour récupérer les deux éléments coté navigateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var tbImages = xhr.responseText.split("#");
    qui te donnerait un tableau avec en élément 0 le mot et en élément 1 l'image.
    (j'ai choisi un # comme sépérateur, mais tu peux choisir le caractère qui te fera plaisir)

    - tu peux retourner une réponse en XML, qui te permettra de renvoyer autant d'éléments que tu veux.
    Un lien qui pourrait t'être utile pour voir la méthode (trop long pour que je fasse l'explication ici ) => http://www.w3schools.com/php/php_ajax_responsexml.asp

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Salut,

    Merci pour ta réponse.

    Ta première méthode, je l'utilisais déjà :

    - faire deux appels ajax qui te renverrons les deux résultats que tu veux,mais je pense que cette solution ne te va pas et c'est la moins bonne.
    La seconde méthode :

    - concaténer les deux résultats et récupérer le tout.
    Je l'ai testé, ça fonctionne nikel, merci

    Ta troisième solution est sans doute la plus intéressante :

    - tu peux retourner une réponse en XML, qui te permettra de renvoyer autant d'éléments que tu veux.
    Je vais la tester car je pense que ça vaut la peine de consacrer du temps.

    Merci encore pour ton aide et bon fin de Week-End.

    beegees

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

Discussions similaires

  1. [AJAX] est-ce possible ?
    Par mitmit dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/04/2007, 12h14
  2. Est-il possible d'avoir deux firewall?
    Par Lanny dans le forum Sécurité
    Réponses: 4
    Dernier message: 20/12/2006, 00h11
  3. [AJAX] Php/MySQL + AJAX : est ce possible
    Par johan06 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/10/2006, 09h58
  4. Est-il possible de charger deux pages pour un seul lien?
    Par dessinateurttuyen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/07/2006, 12h36
  5. Est-il possible de lier deux bases de données ?
    Par Garrett dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/07/2006, 12h28

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