JeuWeb - Crée ton jeu par navigateur
[xAJAX] Map qui ne s'affiche pas - 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 : [xAJAX] Map qui ne s'affiche pas (/showthread.php?tid=1653)



[xAJAX] Map qui ne s'affiche pas - Sephiroth - 15-07-2008

Hello

Pour mon jeu, je viens de passer mon script en XAJAX, mais je ne maitrise pas du tout cette librairie. CA m'affiche une page blanche, mais je ne sais absolument pas pourquoi...

Voici la page jouer.php
Code PHP :
<?php
include ('connection.php');
include (
'Vue.class.php');
include (
'header.inc.php');
require(
"xajax.inc.php");
include (
'deplacer.php');

$sql = 'SELECT `X`, `Y` FROM `ad_casesterre` WHERE `idPerso`=\''.$_SESSION['idPerso'].'\' LIMIT 1';
$result = mysql_query($sql);
$ligne = mysql_fetch_assoc($result);

$_SESSION['iPositionX'] = $ligne['X'];
$_SESSION['iPositionY'] = $ligne['Y'];

$vision = new Vue($_SESSION['iPositionX'], $_SESSION['iPositionY'], 8);
$vision->Mappage();
$vision->Vision();

$xajax = new xajax();

//Debug
//$xajax->debugOn();

$xajax->registerFunction("afficher");
$xajax->registerFunction("deplacer");

$xajax->processRequests();

echo
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Titre du jeu</title>'
;
echo
$xajax->printJavascript();

echo
' <script>
function update()
{
xajax_afficher();
setTimeout("update()", 1000);
}
</script>'
;

echo
HeaderJScript();

echo
'</head>
<body style="text-align:center;">

<div id="grille"> </div>

<script>
update();
</script>

</body>
</html>
'
;
?>

Et la page deplacer.php
Code PHP :
<?php
session_start
();

function
deplacer($dep)
{
global
$vision;

$iPositionX = $_SESSION['iPositionX'];
$iPositionY = $_SESSION['iPositionY'];

$vision->Mappage();
$vision->Vision();

switch(
$dep)
{
case
'HG' :
$iPositionX--;
$iPositionY--;
break;
case
'H' :
$iPositionY--;
break;
case
'HD' :
$iPositionX++;
$iPositionY--;
break;
case
'G' :
$iPositionX--;
break;
case
'D' :
$iPositionX++;
break;
case
'BG' :
$iPositionX--;
$iPositionY++;
break;
case
'B' :
$iPositionY++;
break;
case
'BD' :
$iPositionX++;
$iPositionY++;
break;
}

$sql = "UPDATE `ad_casesterre` SET `X` = '".$iPositionX."', `Y` = '".$iPositionY."' WHERE `idPerso` ='".$_SESSION['idPerso']."' LIMIT 1" ;
mysql_query($sql);

$_SESSION['iPositionX'] = $iPositionX;
$_SESSION['iPositionY'] = $iPositionY;

}

function
afficher()
{
global
$vision;
$objResponse = new xajaxResponse();
$table = $vision->AfficherGrille();
$objResponse->addAssign("grille","innerHTML",$table);
return
$objResponse->getXML();
}

?>

Le bloc de la <table> est affiché par la fonction Vue->AfficherGrille(). Les autres fonctions (Vue->Mappage() et Vue->Vision()) servent a calculer les carreaux et le champs de vision.

Si vous voyez d'ou pourrais venir mon non-affichage, je vous en serait indéfiniement reconnaissant. Merci d'avance
HeaderJScript affiche le javascript


RE: [xAJAX] Map qui ne s'affiche pas - barst - 16-07-2008

Essaie déjà de remplacer:

Code PHP :
<?php 
return $objResponse->getXML();

par

Code PHP :
<?php 
return $objResponse;

La méthode getXML permet de voir le XML stocker dans ton retour mais ne doit pas être le retour il me semble.
Ca fait un moment que je n'ai pas replonger dans xajax....

Sinon tu dois aussi t'assurer que ce bout de code renvoie bien quelque chose :
Code PHP :
<?php 
$table
= $vision->AfficherGrille();

Dernier conseil augmente la durée de ton timeout pour le rafraichissement de la map, toutes les secondes c'est beaucoup trop.
Essaie toutes les 10 secondes minimum et encore....


RE: [xAJAX] Map qui ne s'affiche pas - Sephiroth - 16-07-2008

Merci pour ta réponse. J'ai essayé de faire les modifications que tu m'indique, mais ca ne change rien a l'affichage.

La method vision->AfficherGrille(); revoit bien la table, j'ai reverifié.
Et en passant en mode debug, ca m'envoi ce message :
[Image: erreurajaxvm9.th.jpg]


RE: [xAJAX] Map qui ne s'affiche pas - barst - 16-07-2008

Tu as une variable sResponse non définit quelque part dans ton code.
A la ligne 747 du fichier zajax.inc.php pour être précis.

le problème avec ajax c'est qu'il en faut rien renvoyer d'autre au navigateur que ta réponse.

Là tu as une erreur dans ton code PHP qui provoque une erreur, cette erreur est normalement affiché par le navigateur et du coup elle est retourné en premier avant même ta véritable réponse qui est le tableau contenant la map.

Tu dois d'abord débugger ton code PHP avant de l'utiliser/appeler par ajax.


RE: [xAJAX] Map qui ne s'affiche pas - Ter Rowan - 16-07-2008

pour pouvoir identifier clairement ce type de problème, y a un truc extrêment pratique pour comprendre ce que fait ajax

utilise firebug (avec firefox) et regarde dans l'onglet console

tu trouveras là les divers appels serveurs, mais aussi leurs contenus (les résultats des fichiers php appelés par ajax)

comme cela tu pourras lire ce qu'essaie d'interpréter ton javascript plutôt que de te baser sur le résultat html.

Un non résultat en html peut avoir tellement de raisons, tu dois t'assurer en premier lieu que cela n'est pas dû aux données que tu envoies Smile