Variable dans Div an Ajax

Résolu
Bonjour tout le monde,

Je me permet de poster ici car je n'arrive pas a afficher le contenu d'un variable PHP dans une Div en javascript.

Je m'explique:

J'ai une feuille parse.php qui parse un fichier xml distant et me remonte pour l'exemple, la date du jour.


<?php
$xml=simplexml_load_file("http://192.168.1.6/status.xml") or die("Error: Cannot create object");
$date=$xml->day;
echo $date;
?>


En Javascript, j'arrive bien a récupérer et à mettre le contenu complet de ma feuille parse.php dans ma div qui a pour ID "test".


setInterval(function() {
var url = '../parse.php';
$.post(url, function(data){
$('#test').html(data);
});
}, 2000);



Cependant j'amenais n'afficher que la variable "date" afin de pouvoir récupérer d'autre variable et les afficher dans d'autre div.

Que dois-je mettre a la place de :


$('#test').html(data);


Merci a vous.

11 réponses

  1. Modérateur
    Bonjour,

    commence par nous montrer le résultat d'un console.log de ta variable data histoire qu'on voit à quoi ressemblent les données que tu reçois dans ton JS ...

    Il serait peut-être pas mal également de renvoyer les données au format JSON
    plus simple ensuite pour les manipuler.
    1. Bonjour Jordan45, Merci pour ta réponse ;-)

      j'ai testé

      setInterval(function() {
      var url = '../parse.php';
      $.post(url, function(data){
      $('#test').html(data);
      console.log(data);
      });
      }, 2000);


      Dans la console d Firefox cela me retourne ceci :


      Il n'y a donc en effet que la date, ce qui est normal vu que mon Php ne fait un écho QUE sur la date pour le moment.
      1. Pour information voici ce que me retourne le console.log pour le Php suivant:


        <?php
        $xml=simplexml_load_file("http://192.168.1.6/status.xml") or die("Error: Cannot create object");
        $date=$xml->day;
        $btn=$xml->led0;
        echo $date;
        echo $btn;
        ?>


        On remarque que le contenu de "led 0" vaut 0 et que la div ayant pour ID "test" contient l'ensemble des deux variables...
        1. Modérateur
          Il est étonnant, dans ton console.log qu'il y ait du code html ....
          Tu peux nous montrer le code complet du fichier PHP (celui qui permet de récupérer le contenu de ton xml ).
          N'y aurais tu pas mis du code html ??

          et le contenu du fichier status.xml serait pas mal également.

          1. Bien vu pour le code html dans le php ;-)

            Voici la page php complète:



            <!DOCTYPE html>
            <html>
            <body>

            <?php
            $xml=simplexml_load_file("http://192.168.1.6/status.xml") or die("Error: Cannot create object");
            $date=$xml->day;
            $btn=$xml->led0;
            echo $date;
            echo $btn;
            ?>

            </body>
            </html>


            Voici la page status.xml :
            This XML file does not appear to have any style information associated with it. The document tree is shown below.
            <response>
            <led0>0</led0>
            <led1>0</led1>
            <led2>0</led2>
            <led3>0</led3>
            <led4>0</led4>
            <led5>0</led5>
            <led6>0</led6>
            <led7>0</led7>
            <led8>0</led8>
            <led9>0</led9>
            <led10>0</led10>
            <led11>0</led11>
            <led12>0</led12>
            <led13>0</led13>
            <led14>0</led14>
            <led15>0</led15>
            <led16>0</led16>
            <led17>0</led17>
            <led18>0</led18>
            <led19>0</led19>
            <led20>0</led20>
            <led21>0</led21>
            <led22>0</led22>
            <led23>0</led23>
            <led24>0</led24>
            <led25>0</led25>
            <led26>0</led26>
            <led27>0</led27>
            <led28>0</led28>
            <led29>0</led29>
            <led30>0</led30>
            <led31>0</led31>
            <btn0>up</btn0>
            <btn1>up</btn1>
            <btn2>up</btn2>
            <btn3>up</btn3>
            <btn4>up</btn4>
            <btn5>up</btn5>
            <btn6>up</btn6>
            <btn7>up</btn7>
            <btn8>up</btn8>
            <btn9>up</btn9>
            <btn10>up</btn10>
            <btn11>up</btn11>
            <btn12>up</btn12>
            <btn13>up</btn13>
            <btn14>up</btn14>
            <btn15>up</btn15>
            <btn16>up</btn16>
            <btn17>up</btn17>
            <btn18>up</btn18>
            <btn19>up</btn19>
            <btn20>up</btn20>
            <btn21>up</btn21>
            <btn22>up</btn22>
            <btn23>up</btn23>
            <btn24>up</btn24>
            <btn25>up</btn25>
            <btn26>up</btn26>
            <btn27>up</btn27>
            <btn28>up</btn28>
            <btn29>up</btn29>
            <btn30>up</btn30>
            <btn31>up</btn31>
            <day>31/03/2020</day>
            <time0>14:37:25</time0>
            <analog0>215</analog0>
            <analog1>0</analog1>
            <analog2>0</analog2>
            <analog3>0</analog3>
            <anselect0>6</anselect0>
            <anselect1>1</anselect1>
            <anselect2>0</anselect2>
            <anselect3>0</anselect3>
            <count0>101</count0>
            <count1>27</count1>
            <count2>8</count2>
            <tinf20>----</tinf20>
            <version>3.05.35</version>
            </response>
            
            1. Modérateur
              Côté PHP
              <?php
              
              $xml=simplexml_load_file("http://192.168.1.6/status.xml") or die("Error: Cannot create object");
              
              $result = array('date'=>$xml->day , 'btn'=>$xml->btn);
              echo json_encode($result);
              
              ?> 
              

              et rien d'autre ! pas de html.. que le code que je t'ai donné !

              Et côté JS :
              setInterval(function() {
              	var url = '../parse.php';
              	
              	$.ajax({ cache: false,
              		url: url,
              	    dataType :"json"
              	}).done(function (data) {
              		if(typeof(data)!="undefined" && data!=null ){
              	    console.log(data);
              		$('#test').html(data.date);
              	   }else{
              	     console.log('No Data to display');
              	   }
              	}).fail(function (jqXHR, textStatus) {
              		console.log('ERREUR AJAX',jqXHR, textStatus);
              		alert("Erreur Ajax");
              	});
              
              }, 2000);
              

              1. Merci pour ta réponse, je n'ai pas mis de html ;-)

                Bon j'ai testé ton code, au niveau Php, cela me retourne :


                Ton code transforme le .xml en .Json ? c'est énorme !

                Par contre coté javascript, rien ne s'affiche dans ma page ni dans mon console.log
                Je vais re-contrôler quand même défis que j'ai fais une erreur...
                1. Modérateur
                  Petit oublie de ma part dans le js, il faut ajouter le type

                   setInterval(function() {
                  	var url = '../parse.php';
                  	
                  	$.ajax({ cache: false,
                  		url: url,
                                  type : "POST",
                  	     dataType :"json"
                  	}).done(function (data) {
                  		if(typeof(data)!="undefined" && data!=null ){
                  	    console.log(data);
                  		$('#test').html(data.date);
                  	   }else{
                  	     console.log('No Data to display');
                  	   }
                  	}).fail(function (jqXHR, textStatus) {
                  		console.log('ERREUR AJAX',jqXHR, textStatus);
                  		alert("Erreur Ajax");
                  	});
                  
                  }, 2000);
                  
                2. Modérateur
                  @jordane45au passage, pour débuguer de l'ajax je te conseille d'utiliser Firefox.
                  et de bien penser à activer, dans la console, le debug du xhr

                  ensuite, tu pourras voir tes requêtes POST :
              2. Merci à toi,

                Je dois être une chèvre car je n'arrive n'y a faire fonctionner ton Js ni a voir la requête POST dans xrh..

                Je fouille ...
                1. Donc, je n'arrive rien a voir lorsque je clic sur xhr ..

                  J'ai rajouté un alerte(data.date); pour voir ce qu'il me retournait et le résultat est:
                  1. Modérateur
                    Moi je veux voir la console de ton navigateur...
                    C'est là qu'il y a les infos utiles
                2. J'aurais bien aimé, mais il n'y a rien d'affiché dans la console

                  1. Modérateur
                    Tu n'as pas activé le XHR regarde bien l'écran de ta console
                  2. @jordane45J'ai changé de Pc car sous Mac, ça ne fonctionnait pas...



                    Si je ne dis pas de bêtise, date et btn ne contiennent rien ?
                  3. Modérateur
                    @none61Et si tu fais comme dans l'image que je t'ai donné en dépliant la requête ajax est en nous montrant l'onglet réponse
                3. J'ai trouvé ;-)

                  setInterval(function() {
                          var url = '../parse_ipx.php';
                          
                          $.ajax({ cache: false,
                                  url: url,
                                  type : "POST",
                               dataType :"json"
                          }).done(function (data) {
                                  if(typeof(data)!="undefined" && data!=null ){
                              console.log(data);
                                  $('#test').html(data.date[0]);
                             }else{
                               console.log('No Data to display');
                             }
                          }).fail(function (jqXHR, textStatus) {
                                  console.log('ERREUR AJAX',jqXHR, textStatus);
                                  alert("Erreur Ajax");
                          });
                  
                  }, 2000);
                  
                  


                  EDIT : Correction des balises de code pour y mettre le LANGAGE
                  Merci d'y penser à l'avenir.
                  1. Modérateur
                    Tu peux donc mettre le sujet en Résolu.
                    Bonne soirée
                  2. @jordane45C'est ce que je vais faire, encore merci pour ton aide, ça m'a débloqué ;-)