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] Listes déroulantes dynamiques


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Par défaut [AJAX] Listes déroulantes dynamiques
    Bonjour,
    Je suis en train d'adapter un script de listes déroulantes dynamiques et je me heurte à un problème d'envoi de la valeur sélectionnée dans la seconde liste dynamique vers le fichier coté serveur de création de la troisième liste.

    Voici mon 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
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    <script language="Javascript" type="text/JavaScript">
     
    	// FONCTION DE REQUETE AJAX
        function makeRequest(url,id_niveau,id_ecrire){
     
    		// CREER UNE INSTANCE (UN OBJET) DE LA CLASSE DESIREE FONCTIONNANT SUR PLUSIEURS NAVIGATEURS
    		var http_request = false;
     
    		// POUR MOZILLA ET SAFARI
    		if(window.XMLHttpRequest){
     
    			http_request = new XMLHttpRequest();
     
    			if(http_request.overrideMimeType){
     
    				// APPEL DE FONCTION POUR ECRASER L'EN TETE ENVOYE PAR LE SERVEUR (AU CAS OU IL NE S'AGIT PAS DE TEXT/XML, CAS DE CERTAINES VERSIONS DE FIREFOX
    				http_request.overrideMimeType('text/xml');
    			}
     
       		}
        	// POUR IE
        	else if(window.ActiveXObject){
     
    			try{
       				http_request = new ActiveXObject("Msxml2.XMLHTTP");
        		}
        		catch(e){
     
    				try{
        				http_request = new ActiveXObject("Microsoft.XMLHTTP");
        			}
        			catch(e){}
        		}
        	}
     
    		if(!http_request){
    			alert('Abandon :( Impossible de créer une instance XMLHTTP');
    			return false;
    		}
     
    		// FONCTION DE TRAITEMENT APPELLEE QUAND ON RECEVRA LA REPONSE
    		http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); }
     
    		// LANCEMENT DE LA REQUETE
        	http_request.open('POST', url, true);
     
    		// CHANGER LE TYPE MIME DE LA REQUETE POUR ENVOYER LES DONNEES AVEC LA METHODE POST
        	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        	obj = document.getElementById("id_niv1").value;
        	data = "produitSociete=" + obj;
        	http_request.send(data);
     
    	obj1 = document.getElementById("id_niv2").value;
        	data1 = "produitCat=" + obj1;
        	http_request.send(data1);
        }
     
        // FONCTION DE TRAITEMENT
        function traitementReponse(http_request,id_ecrire){
     
    		var affich = "";
     
    		if(http_request.readyState == 4){
     
    			// CAS AVEC REPONSE DE PHP EN MODE TEXTE
        		if(http_request.status == 200){
     
        			// CHARGEMENT DES ELEMENTS RECUS DANS LA LISTE
    				var affich_list = http_request.responseText;
    				obj = document.getElementById(id_ecrire);
    				obj.innerHTML = affich_list;
     
    			}
    			else{
    				alert('Un problème est survenu avec la requête.');
    			}
    		}
        }
        </script>
    La variable produitSociete passe bien (variable issue de la première liste) mais pas la variable produitCat (issue de la seconde liste)

    Le problème vient de la partie AJAX (entre la ligne 49 et 56 je pense) car l'appel à mes fichiers côté serveurs fonctionne correctement.

    Voici le code de la première liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <select name="produitSociete" id="id_niv1" onChange="makeRequest('ajax1.php','id_niv1','id_list2')">
    <option value="">Choix</option>
    <?=$optionListe?>
    </select>
    Merci de votre aide.
    Flo

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    un peu du mal à comprendre ta logique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	// CHANGER LE TYPE MIME DE LA REQUETE POUR ENVOYER LES DONNEES AVEC LA METHODE POST
        	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        	obj = document.getElementById("id_niv1").value;
        	data = "produitSociete=" + obj;
        	http_request.send(data);
     
    	obj1 = document.getElementById("id_niv2").value;
        	data1 = "produitCat=" + obj1;
        	http_request.send(data1);
    tu fais 2 envois ?????


    A toutes fins utiles http://siddh.developpez.com/articles/ajax/#LI

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Par défaut
    Bonsoir No Smoking,
    L'idée c'est que quand je sélectionne une option dans la première liste, ça fait cet envoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    obj = document.getElementById("id_niv1").value;
    data = "produitSociete=" + obj;
    http_request.send(data);
    Et ça me construit ma seconde liste.
    L'idée est que quand je sélectionne une option de la seconde liste, ça envoie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    obj1 = document.getElementById("id_niv2").value;
    data1 = "produitCat=" + obj1;
    http_request.send(data1);
    Afin de me construire ma troisième et dernière liste.

    Dans tous les cas, je vais regarder ton lien avant de continuer cette discussion.
    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Par défaut
    Bonsoir.
    J'ai pu régler mon problème.
    Je posterai la solution plus tard si ça peut aider quelqu'un.
    Merci

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    il te faut effectivement bien respecter la chronologie des événements
            ACTION sur LISTE N (sélection)
       +--> ENVOI
     N=N+1  réponse -> MISE A JOUR LISTE N+1
       |    ---------------------
       +--  ACTION sur LISTE N+1 (sélection)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/03/2011, 16h43
  2. [AJAX] Listes déroulantes dynamiques en AJAX
    Par ronang dans le forum AJAX
    Réponses: 1
    Dernier message: 24/03/2010, 10h18
  3. [AJAX] liste déroulante dynamique 2 résultats
    Par btobnet dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/04/2008, 15h59
  4. [AJAX] Liste déroulante Dynamique à partir d'un BD
    Par elle-même dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/04/2008, 14h47
  5. [AJAX] Listes déroulantes dynamiques
    Par SHERPAE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/12/2007, 10h12

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