Variable dans Div an Ajax

Résolu
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   -  
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   -
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

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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.
0
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention  
 
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...
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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.


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention  
 
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>
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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);

0
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention  
 
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...
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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);
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
au 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 :
0
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention  
 
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 ...
0
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention  
 
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:
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Moi je veux voir la console de ton navigateur...
C'est là qu'il y a les infos utiles
0
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention  
 
J'aurais bien aimé, mais il n'y a rien d'affiché dans la console

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu n'as pas activé le XHR regarde bien l'écran de ta console
0
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
J'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 ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention  
 
Et 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
0
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
0
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu peux donc mettre le sujet en Résolu.
Bonne soirée
0
none61 Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
C'est ce que je vais faire, encore merci pour ton aide, ça m'a débloqué ;-)
0