JeuWeb - Crée ton jeu par navigateur
Ajax Suraffichage - 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 : Ajax Suraffichage (/showthread.php?tid=117)

Pages : 1 2


Ajax Suraffichage - OncleJames - 22-02-2007

Bonsoir,


Afin de finir mon script Ajax, il me manque à régler un pti dernier problème bien embettant.

J'ai ma page d'accueil avec les news affiché :

Code PHP :
<?php 
<div id="base">

</
div>
<
script>
xajax_news();

</
script>


Fonction News :

Code PHP :
<?php 
function news() {

$reponse = new xajaxResponse();
$page = "";
include(
'accueil.php');
$reponse->addAppend("base", "innerHTML", $page);
return
$reponse->getXML();

}

Tout s'affiche.

J'ai ensuite ma fonction inscription :

Code PHP :
<?php 
function inscription() {

$reponse = new xajaxResponse();
$page = "1";
$reponse->addAppend("base", "innerHTML", $page);
return
$reponse->getXML();

}

J'ai mis 1 pour tester, le problème est le meme.


Mon lien qui doit afficher la fonction inscription au lieu de news dans le div nonmé base :

Code PHP :
<?php 
<a onclick="xajax_inscription();return false;" href="#"> Inscription ajax </a>

Lorsque que je clique sur ce lien :

1) Les news sont toujours affichées et il m'affiche la page inscription ( 1 ici pour faciliter ) en dessous.

2) Par curiosité je reclique dessus, les news toujours affichées, la page inscription aussi, et il me remet en dessous la page inscription.
Au final sur le second clic, j'ai 1 page news et 2 page inscriptions affiché à la suite .


J'ai lu, relu, et rerelu une dizaine de tuto sur Ajax, j'ai toujours pas trouvé.


Merci d'avance

OncleJames


RE: Ajax Suraffichage - Seren - 22-02-2007

Est ce que tu peux nous donner la fonction JS "xajax_inscription" pour plus de clarté ?


RE: Ajax Suraffichage - OncleJames - 22-02-2007

C'est la fonction inscription

Pour l'apeller on prend xajax_inscription

EDIT :

Je n'utilise pas de fonction JS, je prend directement :
Code PHP :
<?php 
$reponse
->addAppend("base", "innerHTML", $page);



RE: Ajax Suraffichage - Seren - 22-02-2007

J'avoue que je vois pas trop. Je te conseille d'utiliser Firefox et le module de debug Firebug, quand tu appuies sur ton lien, tu pourrais observer la requête qui est envoyer au serveur et sa réponse dans la partie "Console".

Tu vois le contenu du message envoyé par la requête Ajax, les valeurs de POST si il y en a, et le contenu de la réponse.

Tu peux vérifier si c'est un problème d'envoi déjà.


RE: Ajax Suraffichage - Roworll - 23-02-2007

Pas vraiment d'idée non plus.
Ca manque d'éléments pour situer le noeud du problème.

[Hors sujet]
Il y a juste un truc qui m'interpelle.. Pourquoi utiliser Ajax pour afficher des news ?
En général les pages de News/Accueil sont plutot statiques et non dynamiques.

La partie Login, pourquoi pas mais les news.
[/Hors sujet]


RE: Ajax Suraffichage - OncleJames - 23-02-2007

Avant de m'encombrer avec les page de jeux en ajax, je voulais tester avec les inscription / news.

Je vais voir la console de debug dans la soirée je tiens au courant


RE: Ajax Suraffichage - OncleJames - 23-02-2007

Aprés plusieurs essais, rien ne s'affiche dans la console ..

Aucune erreur n'est détecté :mauvais:


RE: Ajax Suraffichage - Seren - 23-02-2007

OncleJames a écrit :Aprés plusieurs essais, rien ne s'affiche dans la console ..

Aucune erreur n'est détecté :mauvais:

Vérifie que sur les options de la console, réglable en haut a droite, il y a bien " Enable XMLHttpRequest". ( le petit triangle vers le bas quand tu est sur la console.)

Si c'est le cas, ça veut dire qu'aucune requêtre n'est envoyé.

En effet, la console n'affiche pas que les erreurs mais bien toutes les requetes "Ajax" (=XMLHttpRequest). Si tu ne vois rien c'est qu'aucune requête n'est effectué...

Honnêtement je connais pas du tout xajax, mais je comprends pas comment la requête est envoyé d'après le code que tu as donné. Peut être que si il voit une fonction avec "xajax_xyz" dedans, il crée une requête vers un fichier qui s'appelle "xyz".

Normallement une XMLhttpRequest doit contenir :
- une méthode (POST ou GET généralement)
- une URL (le fichier à aller chercher "script.php" par exemple)
- asynch = true pour une requête asynchrone.

Tu peux regardez ici http://en.wikipedia.org/wiki/XMLHttpRequest pour te faire une idée.

xajax c'est juste une surcouche sur la XMLhttpRequest qui permet d'ignore les différences entre navigateurs (et autre) mais il doit y avoir au moins un endroit sur ta page web ou tu spécifies URL et Method.

A la limite, xajax peut décider de mettre asynch = true par défaut (sinon c'est pas asynchrone et c'est plus de l'ajax), et la méthode à GET, mais il faut certainement fournir l'URL, il peut pas la deviner.

Dans ton code j'ai rien vu qui indique une URL. A moins que ce soit "base" ?


PS : Je crois que j'ai compris :

Lis ce tutorial, surtout la fin :
http://www.i-marco.nl/weblog/archive/2005/11/12/easy_ajax_for_the_masses_with_

Dans l'entête de ton fichier HTML il manque une <?php $objAjax->printJavascript(); ?>

qui va générer le code javascript qui va bien pour que ta fonctions xajax_inscription() fonctionne. La pour l'instant la fonction xajax_inscription ne fait reference à rien du tout ! (si j'ai bien tout compris.)


RE: Ajax Suraffichage - OncleJames - 23-02-2007

En faite j'ai trouvé, il suffisait de nettoyer le div en utilisant la fonction ajax addclear

addClear($sTargetId,$sAttribute)

Merci beaucoups


RE: Ajax Suraffichage - Maxime - 24-02-2007

Petite aide car j'ai l'impression que tu en as besoin.

Alors pour assigner à un élément html un contenu on fait comme ça:
$objResponse->addAssign("contentDiv", "innerHTML", "Some Text");

La méthode addAppend elle permet de rajouter du texte à un élément html existant et ayant déjà un contenu, après de là à ce que ton problème vienne de là c'est pas dis.

Et sinon tu as la liste des méthodes de xajax sur le site officiel, et parce que je suis généreu ce soir voici l'url.