Variable dans Div an Ajax

Résolu/Fermé
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020 - 4 avril 2020 à 14:47
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020 - 5 avril 2020 à 21:11
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 avril 2020 à 15:00
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 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
4 avril 2020 à 19:57
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 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
4 avril 2020 à 20:04
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 avril 2020 à 20:09
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 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
4 avril 2020 à 20:17
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
5 avril 2020 à 14:58
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 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
5 avril 2020 à 17:29
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
5 avril 2020 à 18:04
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
5 avril 2020 à 18:11
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 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
Modifié le 5 avril 2020 à 18:25
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 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
5 avril 2020 à 18:49
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
5 avril 2020 à 18:51
Moi je veux voir la console de ton navigateur...
C'est là qu'il y a les infos utiles
0
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
Modifié le 5 avril 2020 à 19:01
J'aurais bien aimé, mais il n'y a rien d'affiché dans la console

0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 5 avril 2020 à 19:05
Tu n'as pas activé le XHR regarde bien l'écran de ta console
0
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
Modifié le 5 avril 2020 à 19:47
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
5 avril 2020 à 19:48
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 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
5 avril 2020 à 19:52
0
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
Modifié le 5 avril 2020 à 20:49
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
5 avril 2020 à 20:49
Tu peux donc mettre le sujet en Résolu.
Bonne soirée
0
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
5 avril 2020 à 21:11
C'est ce que je vais faire, encore merci pour ton aide, ça m'a débloqué ;-)
0