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

JavaScript Discussion :

[AJAX]Listes liées multiples


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 26
    Points
    26
    Par défaut [AJAX]Listes liées multiples
    Bonjour,


    Je débute dans l'Ajax et je dois lier 6 listes entre elles grace à une base de données
    Je me suis donc inspiré de l'exemple dans le tutoriel
    Le problème est que je dois modifier dynamiquement les 5 autres listes quand le contenu d'1 est changée
    J'ai donc 5 appels à des fonctions de ce type: (avec à chaques fois le fichier de destination modifié).

    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
    function maj_activite(){
     
    				getXhr();
     
    				xhr.onreadystatechange = function(){
     
    					if(xhr.readyState == 4 && xhr.status == 200){
     
    						leselect = xhr.responseText;
     
    						document.getElementById('divactivite').innerHTML = leselect;
    					}
    				}
     
     
    				xhr.open("POST","ajaxactivite.php",true);
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
     
    				// ici, l'id de l'activite
           	                        sel1 = document.getElementById('activite');
    				idactivite = sel1.options[sel1.selectedIndex].value;
     
    				// ici, l'id de la production
           	       	       	       	sel2 = document.getElementById('production');
    				idproduction = sel2.options[sel2.selectedIndex].value;
     
    // ici, l'id du produit
    	       	       		sel3 = document.getElementById('produit');
    				idproduit = sel3.options[sel3.selectedIndex].value;
     
    // ici, l'id du continent d'export
                 	       	 	sel4 = document.getElementById('exportcontinent');
    				idexportcontinent = sel4.options[sel4.selectedIndex].value;
     
    // ici, l'id du pays d'export
           	       	       	       	sel5 = document.getElementById('exportpays');
    				idexportpays = sel5.options[sel5.selectedIndex].value;
     
    // ici, l'id du continent d'import
                 	       	 	sel6 = document.getElementById('importcontinent');
    				idimportcontinent = sel6.options[sel6.selectedIndex].value;
     
    // ici, l'id du pays d'import
           	       	       	       	sel7 = document.getElementById('importpays');
    				idimportpays = sel7.options[sel7.selectedIndex].value;
    				// envoi des 7 arguments
    		xhr.send("idactivite="+idactivite+"&idproduction="+idproduction+"&idproduit="+idproduit+"&idexportcontinent="+idexportcontinent+"&idexportpays="+idexportpays+"&idimportcontinent="+idimportcontinent+"&idimportpays="+idimportpays);
    			}
    Mais dans le fichier ajaxactivite.php je ne récupére rien dans les variables (par exemple isset($_POST["idproduction"]) est toujours à false).
    Là ou je ne comprend plus grand chose est que si je ne fais appel qu'à une fonction de ce genre ça fonctionne parfaitement...

    A noter que l'appel aux 5 fonctions se fait de cette manière et que j'ai un OnChange = 'activite_changee()' dans la balise select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function activite_changee(){
          maj_production();
          maj_produit();
          maj_export_continent();
          maj_export_pays();
          maj_import_continent();
          maj_import_pays();
        }
    et donc si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     function activite_changee(){
            maj_production();
          }
    ca fonctionne....

    J'espère avoir été clair...

    Merci d'avance!

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "abc=" + escape(abc) + "&xyz=" + escape(xyz)
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Merci de t'intéresser à mon problème FremyCompany !
    j'ai modifié ce que j'envoyais par le xhr.send()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send("idactivite=" + escape(idactivite) + "&idproduction=" + escape(idproduction) + "&idproduit=" + escape(idproduit) + "&idexportcontinent=" + escape(idexportcontinent) + "&idexportpays=" + escape(idexportpays) + "&idimportcontinent=" + escape(idimportcontinent) + "&idimportpays=" + escape(idimportpays))
    mais je ne récupére toujours rien dans le fichier de destination si je le fais pour toutes les listes à mettre à jour

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    je me demandais aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
           	                        var sel1 = document.getElementById('activite');
    				var idactivite = sel1.options[sel1.selectedIndex].value;
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    J'ai essayé aussi mais ca veut toujours pas
    Le problème c'est que si je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert("idactivite=" + escape(idactivite) + "&idproduction=" + escape(idproduction) + "&idproduit=" + escape(idproduit) + "&idexportcontinent=" + escape(idexportcontinent) + "&idexportpays=" + escape(idexportpays) + "&idimportcontinent=" + escape(idimportcontinent) + "&idimportpays=" + escape(idimportpays)
    Il m'affiche les paramètres avec les bonnes valeurs donc je pense que c'est pendant l'envoi des paramètre qu'il y a un truc bizarre...mais je suis vraiment perdu la! Théoriquement on peut bien faire appel plusieurs fois à ce type de fonction? Il n'y a pas de problème lors de l'appel à plusieurs getXhr() ou quelque chose comme ca?

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    essai un peu de réinitialiser ton XHR au début de ta fonction...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var xhr= FunctionQuiRenvoieUnXmlHttpRequest()
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Oui je le fais grâce à la fonction
    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
     
    function getXhr(){
    				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; 
    				} 
    			}
    que j'utilise au début de chaques fonctions...
    j'ai même essayé de rassembler tous les xhr.send (1 pour chaque fichier php de destination) mais c'est toujours le même résultat!
    En tout cas merci encore de m'aider FremyCompany

  8. #8
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    et si tu supprime cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Si j'enlève cette ligne ca marche plus même si je mets à jour qu'une seule liste

  10. #10
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Et si tu passe par GET ?
    Sinon, ben j'avoue que je vois pas ou est le pb...
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Y'a du nouveau!
    Ce n'est en fait que la dernière liste qui recoit correctement les paramètres, donc seul le dernier xhr.send() fonctionne. Comme si les autres étaient interrompu par les suivant.
    Est-ce qu'il faut faire quelque chose avant de recommencer un xhr.send()?
    Est-ce que c'est possible?
    Est-ce un complot pour m'empécher de mener à bien ce stage? (ayé je péte un cable )

    EDIT: Je vais essayer GET

  12. #12
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    alors j'ai pigé... tu utilises une mauvaise méthode...
    regarde plustot :

    XHR-->NULL --> INSTANCE 1
    XHR-->ENVOI 1
    XHR-->INSTANCE 1--> INSTANCE 2
    ==> ECHEC DANS L'ENVOI 1 ou 2

    solution proposée :
    plutoque de faire "xhr=new XmlHttpRequest();"
    fait "return new XmlHttpRequest"
    et dans ton code tu vais var "xhr=getXhr();"
    pour le onreadystatechange, utilise this à la place de xhr.
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    YYYYYYEEEEEEEEEEEEESSSSSSSSSS!!!!!!!!!!!
    Ca marche!!
    Je te remercie FremyCompany!
    Si je te croise je te paie un coup!

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

Discussions similaires

  1. [AJAX] Liste liées et boutons radio
    Par neg12 dans le forum AJAX
    Réponses: 10
    Dernier message: 20/10/2011, 14h47
  2. Réponses: 1
    Dernier message: 29/05/2010, 18h22
  3. [AJAX] Listes liées multiples
    Par hajjejala dans le forum AJAX
    Réponses: 4
    Dernier message: 28/05/2010, 12h54
  4. [AJAX] Ajax listes liées avec modules Joomla
    Par dualweil dans le forum AJAX
    Réponses: 0
    Dernier message: 07/04/2010, 06h18
  5. [PHP-JS] Listes liées multiple en PHP
    Par drakenzara dans le forum Langage
    Réponses: 5
    Dernier message: 05/01/2007, 09h12

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