JeuWeb - Crée ton jeu par navigateur
Affichage de données envoyées par une page appelée par Ajax - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Affichage de données envoyées par une page appelée par Ajax (/showthread.php?tid=145)



Affichage de données envoyées par une page appelée par Ajax - Joojo - 27-04-2008

Bonjour ou bonsoir à tous (c'est comme vous voulez). En ces bonnes vacances je me suis mit à revoir le javascript et à apprendre un peu le maniement des objets XMLHttpRequest.

Je l'utilise pour un éditeur de monstre (editeur_monstre.php), ou on place instantanément ceux-ci sur la map et la case selectionnées.

Quand on survole une case cela affiche normalement les monstres présents sur cette case.

Donc quand je survole une case, j'appelle une fonction javascript qui contient du AJAX et qui appelle la page monstre.php.

Celle-ci traite les données (PHP) et va chercher les bestioles présentes sur la case.

Code PHP :
<?php 
$liste
= mysql_query('SELECT * FROM monstres INNER JOIN map_monstres
ON map_monstres.id_case = '
. $id_case .'
AND map_monstres.id_map = monstres.id_monstre'
)or die(mysql_error());

while(
$r_liste = mysql_fetch_array($liste))
{
echo
'<img src="'.$r_liste['image_monstre'].'">';
}

La fonction sur editeur_monstre.php:
Code PHP :
<?php 
<script type="text/javascript">
//Affichage des monstres présents sur la case
function monstres_existants(id_case)
{
var
requete;
if (
window.XMLHttpRequest) requete = new XMLHttpRequest(); // Firefox
else if (window.ActiveXObject) requete = new ActiveXObject('Microsoft.XMLHTTP'); // Internet Explorer

requete.open('GET','monstre.php?action=liste_des_monstres&id_case='+id_case+'',true);

requete.onreadystatechange = function()
{
if (
requete.readyState == 4)
{
var
div = document.getElementById('affichage_monstre');
div.innerHTML = requete.responseText;
}
}
requete.send(null);
}
</
script>

<
div id="affichage_monstre"></div>

Et je comptais récupérer ces données avec "responseText" sur editeur_monstre.php. Sauf que là ça ne fonctionne pas.

Pourtant cela fonctionne quand un "echo" contient juste une phrase du style "La monstre a été selectioné etc....".

Donc je pense qu'il aime tout simplement pas la boucle. Et qu'il faudrait d'abord "compresser" toutes les données de la boucle pour ensuite faire un "echo" pour que cela les envoie à "responseText", on décompresse les données et on les affiche. Mais là je cale un petit peu.

Bref j'y arrive pas et un peu d'aide serait le bienvenue.

Merci.


RE: Affichage de données envoyés par une page qui a été appelé par AJAX - Anthor - 27-04-2008

peut tu nous montrer ton code javascript ?


RE: Affichage de données envoyés par une page qui a été appelé par AJAX - Joojo - 27-04-2008

J'ai édité mon premier post. Wink


RE: Affichage de données envoyés par une page qui a été appelé par AJAX - Roworll - 27-04-2008

Si à la place de
Code PHP :
<?php 
div
.innerHTML = requete.responseText;
tu mets
Code PHP :
<?php 
alert
(requete.responseText);
ça affiche quoi ?


RE: Affichage de données envoyés par une page qui a été appelé par AJAX - Joojo - 28-04-2008

Ah merci Roworlll, en fait c'était juste une erreur de lien pour afficher l'image car l'url que j'obtiens de la requête c'est "images/monstres/monstre1.png" mais comme je suis dans le dossier admin il faut ajouter devant le lien "../". Confusediffle:

Pas me taper hein:cogne:

Merci.


RE: [Réglé] Affichage de données envoyés par une page qui a été appelé par AJAX - keke - 28-04-2008

Je connais pas suffisament le JS et AJAX, mais ça :

monstre.php?action=liste_des_monstres&id_case=

C'est autorisé ? (ça me fait frémir ...)

Bonne journée !


RE: [Réglé] Affichage de données envoyés par une page qui a été appelé par AJAX - Roworll - 28-04-2008

Ca n'a rien d'exceptionnel.
Le propre d'Ajax est de faire de l'asynchrone, c'est a dire lancer des requêtes HTTP sans recharger ta page HTML
Donc, on peut appeler en POST ou en GET, aucun soucis.

L'essentiel est bien sur de bien vérifier la cohérence des données envoyées par le client.