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] Aucune réponse renvoyée


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 19
    Points
    19
    Par défaut [AJAX] Aucune réponse renvoyée
    Bonjour à tous,

    ça fait environ 2 heures que je bloque sur un truc qui doit être particulièrement bête, mais étant donné qu'il s'agit de la première fois que je touche à l'AJAX, je me dis que j'ai du rater quelque chose... En fait, en utilisant Firebug, j'ai constaté qu'aucune réponse n'était renvoyée alors que la variable POST passe parfaitement...

    Je précise également que j'ai tenté de "tracer" xhr.responseTest, et celui-ci reste éternellement vide...

    Voici le code associé à ces problèmes. Il s'agit en fait simplement de 2 listes déroulantes dont le contenu de la 2e dépend du contenu de la 1ère:

    La page PHP contenant les 2 listes déroulantes (volontairement tronquée, le reste du code n'est pas utile ici):

    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
    81
    82
    83
    84
    85
    86
    <?php
    session_start();
    include('Connect_vectra_test.inc');
    include('SQL_functions.inc');
    include('PHP_functions.inc');
    if(isset($_POST["typeMateriel"])){
            $typeMateriel = $_POST["typeMateriel"];
            unset($typeRotor);
            $select = "SELECT te.id, te.etape, te.designation, er.status, er.norme_utilisee, 
            er.critere_acceptation, er.tension_essai_std";
            $from = "FROM sgdt.type_essai te, sgdt.essais_rotor er, sgdt.TYPE_MATERIELS tm";
            
            if(isset($_POST["typeRotor"])){
                    $typeRotor = $_POST["typeRotor"];
     
                    $where = "WHERE te.id = er.id_essai
                    AND tm.code = er.type_materiels
                    AND tm.code = '".$typeMateriel."'
                    AND er.code_type_rot = '".$typeRotor."'";
            }
            else{
                    $where = "WHERE te.id = er.id_essai
                    AND tm.code = er.type_materiels
                    AND tm.code = '".$typeMateriel."'";
            }
            
            $where .= " ORDER BY te.ordre_chrono";
            $essais = select($select, $from, $where);
    }
     
    /* Selection des types de materiels pour la select box. */
    $tm_select = "SELECT code, groupe_essais, designation";
    $tm_from = "FROM sgdt.type_materiels";
    $tm_where = "WHERE groupe_essais IS NOT NULL
    ORDER BY designation";
     
    $tm = select($tm_select, $tm_from, $tm_where);
    <html>
    <head>
    <title>Liste des essais pour les rotors</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
    <link rel="stylesheet" type="text/css" href="Vectra_PV_elec.css" title="Default" />
    <script language="JavaScript" type="text/javascript" src="Vectra_reg_functions.js"></script>
    </head>
    <body>
            <h2><u>Liste des essais pour les rotors</u></h2>
            <div class="selectionEssaisStator">
                    <form action="liste_essais_rotor.php" method="post" id="select" name="select">
                            <table >
                                    <tr>
                                            <td>Sélectionnez un type de matériel :</td>
                                            <td>
                                                    <select name="typeMateriel" id="typeMateriel" onchange="fillTypeRotor();">
                                                            <option <? if(!isset($typeMateriel)) echo 'selected'; ?> value=""></option>
    								<? 
    									$i = 0;
    									while(isset($tm[$i])){
    										$selected = "";
    										if(isset($typeMateriel)){
    											if($typeMateriel == $tm[$i]["CODE"]){
    												$selected = "selected";
    												$current_mat = $tm[$i]["CODE"];
    											}
    										}
    								?>
    								<option <?= $selected; ?> value="<?= $tm[$i]['CODE']; ?>">
    									Matériel: <?= $tm[$i]['DESIGNATION']; ?>
    								</option>
    								<? $i++;} ?>
    						</select>
    					</td>
    				</tr>
    				<tr>
    					<td>Sélectionnez un type de rotor :</td>
    					<td>
    						<select id="typeRotor" name="typeRotor"
    						onchange="document.getElementById('select').submit();">
    							<option value=""></option>
    						</select>						
    					</td> 
    				</tr>
    			</table>
    		</form>
    		<hr />
    	</div>
    	<br />
    Les 2 fonctions AJAX:

    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
    function getXhr(){
    	var xhr = null; 
    	if(window.XMLHttpRequest)
    	   xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ 
    	   try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    	}
    	else { 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	   xhr = false; 
    	} 
    	return xhr;
    }
     
    function fillTypeRotor(){
    	var xhr = getXhr();
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState == 4){
    			mysel = xhr.responseText;
    			document.getElementById('typeRotor').innerHTML = mysel;
    		}
    	}
     
    	xhr.open("POST","cmbTypeRotor.php",true);
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	sel = document.getElementById('typeMateriel');
    	typeMateriel = sel.options[sel.selectedIndex].value;
    	xhr.send('typeMateriel='+typeMateriel);
    }
    La page PHP exécutée par la requête AJAX:

    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
    <?php
            include('Connect_vectra_test.inc');
            include('SQL_functions.inc');
            include('PHP_functions.inc');
    ?>
    	<select id="typeRotor" name="typeRotor"onchange="document.getElementById('select').submit();">
    <?
    	if(isset($_POST["typeMateriel"])){
    		if(isset($_POST["typeMateriel"])){
    		$tr_select = "SELECT code_type_rotor_pv, desc_type_rotor_pv";
    		$tr_from = "FROM sgdt.type_rotors_pv";
    		$tr_where = "WHERE code_type_materiels = '".$_POST["typeMateriel"]." 'ORDER BY desc_type_rotor_pv";
     
    		$tr = select($tr_select, $tr_from, $tr_where);
    		$i = 0;
    		while(isset($tr[$i])){
    			echo "<option value='".$tr[$i]["CODE_TYPE_ROTOR_PV"]."'>".$tr[$i]["DESC_TYPE_ROTOR_PV"]."</option>";
    			$i++;
    		}
    	}
    	}
    	echo '</select>';
    ?>
    Au final, ma 2e liste déroulante n'est absolument pas remplie...

    Des idées? Je suis preneur !

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    bonjour je ne c'est pas trop où est l'erreur même si je pense qu'elle viens de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send('typeMateriel='+typeMateriel);
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('select').submit();
    pourquoi pas mais pour le PHP utilise plutôt <?php car certain hébergeur (peu mais quand même) ne gère pas <?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    En fait, ça ne peut pas être le code là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('select').submit();
    car select correspond au formulaire là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="liste_essais_rotor.php" method="post" id="select" name="select">
    et permet simplement et soumettre le formulaire en question.

    Pour le xhr.send() je ne vois pas d'où peut venir le problème... Cette fonction ne s'utilise pas de cette manière ?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    tu peux par contre rajouter sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(xhr.readyState == 4 && xhr.status == 200){
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(xhr.readyState == 4){

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Ah j'avais lu que c'était pas forcément indispensable et que ça présentait même des blocages anormaux... Mais bon, il y était au début et ça ne changeait rien...

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Si tu n'y arrives pas, utilise Jquery pour l'AJAX avec la fonction Post.
    Pense à indenter ton code pour qu'il soit plus lisible, sépare le code php de ton code html et utilise les balise <?php.

    Sans oublier que la couche DAO te permet d'éviter d'éventuelles erreurs...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Pour la séparation php/html je suis un inconditionnel, et ça m'irrite au plus haut point, mais ce code n'est pas le mien, je l'ai repris d'un ancien stagiaire qui a osé me pondre une page d'accueil de 4000 lignes blindées de scripts inutiles.
    Pour l'indentation, effectivement elle est crade sur le dernier code mais je voulais essayer de faire rapidement fonctionner ce truc qui me prend le chou depuis 9h ce matin

    Je vais m'essayer à JQuery et on verra bien ce que ça donne... Stay tuned.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Okay ! Donc j'avais tout simplement oublié un session_start(); en tout début de page ce qui m'empêchait de me connecter à ma base Oracle car les fonctions prédéfinies de l'application les utilisent pour se connecter... Et c'est qui qui a perdu 6h dans sa journée sur un truc con comme la lune?

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 24/04/2007, 20h53
  2. [AJAX] xajax : réponse en html et pas XML
    Par mewax dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/01/2007, 15h17
  3. Passage à Tomcat 5.5 : aucune réponse
    Par HaTnuX dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 03/01/2007, 10h36
  4. Aucune Réponse Passerelle WAP
    Par mxh77 dans le forum 4D
    Réponses: 4
    Dernier message: 28/06/2006, 15h48
  5. [AJAX] texte réponse Ajax dans un conteneur div
    Par grinder59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/02/2006, 18h07

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