JeuWeb - Crée ton jeu par navigateur
[Résolu] Refresh après traitement d'une fonction, incomprehensible - 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 : [Résolu] Refresh après traitement d'une fonction, incomprehensible (/showthread.php?tid=2719)

Pages : 1 2


RE: [Résolu] Refresh après traitement d'une fonction, incomprehensible - orditeck - 08-07-2008

Pour ne pas que la page reviennent en haut avec le onclick sur un lien (<a href="#" onclick="">)
vous POURRIEZ faire
<a href="javascript : void(0);" onclick=""> (Pas d'espace... mais MyBB en veut apprement.)
Mais cette solution n'est pas conseillée
En effet, elle peut causée des bug d'affichage. Il est fortement conseillé de ne pas utiliser de " javascript : ; " dans la balise href=""
Utilisez plutôt (comme dit plus haut)
<a href="#" onclick="MaFonction(); return false;"> Mon lien </a>

Source : http://blog.reindel.com/2006/08/11/a-hrefjavascriptvoid0-avoid-the-void/

Mais personellement, je préfère le faire sur un div Tongue
Mais ça dépend toujours du contexte de la mise en page selon moi...


RE: [Résolu] Refresh après traitement d'une fonction, incomprehensible - Kassak - 08-07-2008

Petite question, mon script de déplacement sur la map en ajax, lors d'un clique, envoie sur une page.php, traite le déplacement, et ensuite refresh la div map.

Je souhaiterais savoir comment récupérer des données de la page.php, car elle renvoie des erreurs de temps en temps ( manque de pm, case inaccessible etc ... ) Wink


RE: [Résolu] Refresh après traitement d'une fonction, incomprehensible - Eluox - 09-07-2008

J'debute en ajax, mais je ferais un echo dans la page php ( avec les conditions que tu veux ect ), et ensuite dans le js, on suppose que tu a une var xhr xmlhttprequest Wink

tu fait :

Code PHP :
<?php 
xhr
.onreadystatechange = function()
{
if(
xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
document.getElementById("myResult").innerHTML = xhr.responseText;
}
}

Le div myresult contiendra les echo de ta page php Wink

je sais pas si c'est sa que tu voulais faire, mais bon :p


RE: [Résolu] Refresh après traitement d'une fonction, incomprehensible - Kassak - 09-07-2008

Oui c'est ça, mais ce système ne marche pas (pas normal d'ailleurs).

Il n'y a pas un moyen de récupérer des variables de cette page? Je me débrouille ensuite pour mettre à jour ce qu'il faut.


RE: [Résolu] Refresh après traitement d'une fonction, incomprehensible - Eluox - 09-07-2008

Pourquoi sa marche pas ?
Firebug te renvois pas d'erreur ?


RE: [Résolu] Refresh après traitement d'une fonction, incomprehensible - Kassak - 09-07-2008

Non justement aucune erreur, je vois que le fichier se charge, que la div se refresh, et c'est tout.


RE: [Résolu] Refresh après traitement d'une fonction, incomprehensible - Eluox - 09-07-2008

On pourrait voir ton code ? :/
Essaye de créer un autre div que celui de la map, ou un span.

dans le cas de mon code, par exemple, tu fait
Code PHP :
<?php 
<span id="myResult"></span

Et la le message apparait ? tu faisais comme ça déjà ?
Sans ton code c'est dur,

Cordialement,


RE: [Résolu] Refresh après traitement d'une fonction, incomprehensible - Ter Rowan - 10-07-2008

regardes firebug, le contenu du fichier renvoyé (onglet console je crois)

si le contenu correspond à ce que tu veux, alors utilise javascript pour comprendre le message, ce n'est plus de l' "ajax" c'est de l'interprétation d'un texte en javascript.

le passage de variable et autre se fait grâce à l'écho du php qui te sert à alimenter

en fait tu passes des informations, pas des variables

tout est dans

xhr.responseText (ou xhr.responseXML si tu passes en XML)

à toi de réfléchir à ce que tu mets dans la chaine de caractères que tu renvoies

un truc simple :

je renvoie 0 suivi de # suivi d'un message d'erreur si le mouvement n'est pas possible
1 suivi de # suivi de ce que je veux afficher (mettre dans le innerHTML)


du coup au lieu d'avoir :


Code PHP :
<?php 
xhr
.onreadystatechange = function()
{
if(
xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
document.getElementById("myResult").innerHTML = xhr.responseText;
}
}

je fais

Code PHP :
<?php 
xhr
.onreadystatechange = function()
{
if(
xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
var
rep = xhr.responseText.split('#');
if (
rep[0] == 0)
{
// traitement de l'erreur
alert(rep[1]);
}
else
{
// tout marche
document.getElementById("myResult").innerHTML = rep[1] ;
}
}
}
à noter j'ai choisi # comme séparateur mais ça peut être @ ou autre chose, du moment que tu ne te sers pas de ce caractère dans la suite du message.

j'espère que ça t'aidera