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. 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é ;-)
  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. 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
  4. 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. 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. 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. 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
          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. 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. 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. 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.