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] Appel de fonction javascript avec AJAX


Sujet :

AJAX

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2011
    Messages
    40
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 40
    Par d�faut [AJAX] Appel de fonction javascript avec AJAX
    Bonjour @ tous.

    J'ai cr�� dans ma page index.php, une zone de liste li�e avec AJAX qui fait que lorsque je s�lectionne une valeurs dans cette zone de liste 1 une zone de liste 2 apparait.

    Jusque l�, aucun probl�me.

    Le probl�me arrive lorsque je tente de faire la m�me chose � partir de la zone de liste 2 pour faire apparaitre une zone de liste 3, �a ne fonctionne pas !

    Au niveau du code de mon index.php j'ai :
    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div id='choix_utilisateur_mcd'>
    	<!-- Création de la zone de liste pour choisir le MCD à l'ouverture de mon index.php + AJAX-->
    <?php
    include 'statistiques_choix_mcd.php';
    ?>
    </div>
    <div id='choix_utilisateur_table'>
    	<!-- Création de la zone de liste pour choisir la table en fonction du MCD lorsque je sélectionne ma première valeur -->
    </div>
    <div id='choix_utilisateur_champ'>
    	<!-- Création de la zone de liste pour choisir le champ en fonction de la table - qui ne fonctionne pas-->
    </div>


    Dans mon premier include, je g�n�re ma premi�re zone de liste � l'ouverture et sur l'�v�nement : onchange je g�n�re ma seconde zone de liste dans le div choix_utilisateur_table.

    Comme je disais, l� aucun probl�me. Pour g�n�rer cette seconde zone de liste, je fais appel � un fichier PHP similaire � celui de l'include (en dehors des ID que je modifie bien entendu). Il contient, � la fois la requ�te qui me g�n�re la zone de liste et � la fois le script pour le JavaScript et l'Ajax :

    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $dbconnect = pg_connect("host=localhost port=5432 dbname=mybdd user=postgres password=azerty");
    $requete = "SELECT value,libelle FROM table WHERE champ = '" . addslashes($_POST['var']) . "';";
    $resultat = pg_query($dbconnect,$requete) or die(pg_errormessage());
    echo "<form id='choix_table' method='POST'>
    	<table><tr><td>
    	<select align='top' name='zlchoix_table' id='idzlchoix_table' maxlength='80'>";
    while ($row=pg_fetch_array($resultat)){
    	print ("<br><option value=".$row["value"].">".$row["libelle"]);
    }
    echo"</select></td></tr>
    	</table>
    	</form>";
    pg_close($dbconnect);
    ?>
    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
    function choixzltable(value){
    	var xhr = new XMLHttpRequest();
    	xhr.open ('POST','statistiques_choix_champ.php');
    	var value1 = encodeURIComponent(value);
    	xhr.onreadystatechange  = function(){
    		if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)){
    			document.getElementById('choix_utilisateur_champ').innerHTML = xhr.responseText;
    		}
    	}
    	xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    	xhr.send('var_table=' + value1);
    }
    (function() {
    	var inputs1 = document.getElementById('idzlchoix_table');
    	inputs1.onchange = function() {
    		choixzltable (this.value);
    	}
    })();
    J'ai test� de faire un alert sur ma variable inputs1, mais je vois bien que l'�v�nement onchange ne fonctionne pas. C'est pour cette raison que j'en d�duis que c'est le script qui ne fonctionne pas.

    Mais ce que je ne comprend pas, c'est que j'ai fais quelques tests compl�mentaires peu concluants :

    J'ai tent� un include de mon deuxi�me php dans mon index.php mais �a ne fonctionne pas plus.

    J'ai tent� d'int�grer directement dans mon index.php le script, sans plus de r�sultat...

    Est-ce que vous auriez une id�e de l'origine du probl�me ?

    Par avance merci.

    Geo-x

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2011
    Messages
    40
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 40
    Par d�faut
    J'ai r�ussi � contourner le probl�me sans trouver d'explication en tant que telle.

    Pour �a, j'ai supprim� la partie de code qui indique que l'on veut un �v�nement sur changement :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    (function() {
    	var inputs1 = document.getElementById('idzlchoix_table');
    	inputs1.onchange = function() {
    		choixzltable (this.value);
    	}
    })
    Pour rajouter un onchange dans mon select du code PHP :

    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $dbconnect = pg_connect("host=localhost port=5432 dbname=mybdd user=postgres password=azerty");
    $requete = "SELECT value,libelle FROM table WHERE champ = '" . addslashes($_POST['var']) . "';";
    $resultat = pg_query($dbconnect,$requete) or die(pg_errormessage());
    echo "<form id='choix_table' method='POST'>
    	<table><tr><td>
    	<select align='top' name='zlchoix_table' id='idzlchoix_table' maxlength='80' onchange='choixzltable(this.value)'>";
    while ($row=pg_fetch_array($resultat)){
    	print ("<br><option value=".$row["value"].">".$row["libelle"]);
    }
    echo"</select></td></tr>
    	</table>
    	</form>";
    pg_close($dbconnect);
    ?>

    Et l�, aucun probl�me...mais je ne comprend toujours pas pourquoi �a ne fonctionnait pas avant, et �a �a m'agace , alors si vous avez des suggestions, je suis preneur !

    Par avance merci.

    Geo-x

  3. #3
    Mod�rateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjour,
    Et l�, aucun probl�me...mais je ne comprend toujours pas pourquoi �a ne fonctionnait pas avant, et �a �a m'agace , alors si vous avez des suggestions, je suis preneur !
    si l'on prend ce passage de ton code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    (function() {
    	var inputs1 = document.getElementById('idzlchoix_table');
    	inputs1.onchange = function() {
    		choixzltable (this.value);
    	}
    })();
    il s'effectue au chargement de la page et ce bien avant que ton SELECT n'appartienne au DOM donc erreur.

Discussions similaires

  1. [2 en 1]Ev�nement lors de l'appel d'une fonction && javascript avec ajax
    Par crocro dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 02/08/2008, 21h36
  2. [AJAX] Appel de fonction php avec ajax
    Par simoinfonet dans le forum G�n�ral JavaScript
    R�ponses: 6
    Dernier message: 16/05/2008, 11h39
  3. [AJAX] Acces aux donn�es avec ajax dans une fonction javascript
    Par Sidi-Bou dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 03/03/2008, 12h04
  4. [AJAX] Appel de fonction javascript
    Par slaborde dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 29/05/2006, 19h43
  5. [AJAX] Appel de plusieurs pages avec Ajax
    Par shadowbob dans le forum G�n�ral JavaScript
    R�ponses: 16
    Dernier message: 13/02/2006, 18h29

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