JeuWeb - Crée ton jeu par navigateur
[résolu pour le moment :P] Ajax, aide svp - 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 pour le moment :P] Ajax, aide svp (/showthread.php?tid=1953)

Pages : 1 2 3 4 5 6


RE: Ajax, aide svp - Sephi-Chan - 04-11-2007

V1nc3 a écrit :Comment fonctionne cette ligne : http.onreadystatechange = affichage_result(); ?
La fonction affichage_result() joue ici un rôle de fonction de Callback : elle est executée quand la propriété readyState change.


Sephi-Chan


RE: Ajax, aide svp - X-ZoD - 04-11-2007

Citation :Pourquoi est ce que mon alert('2'); ne fonctionne jamais?
je ne vois pas de alert('2)

Citation :Pourquoi est ce que si je mets, dans la fonction bouger, alert(reponseText); avant la location.reload(); (ou après) il me mets undefined?
elle sort d'ou ta variable reponseText ? c normal qu'elle soit indefinie


RE: Ajax, aide svp - V1nc3 - 04-11-2007

Ben :
Les propriétés de l'objet XMLHttpRequest
responseText Réponse sous forme de chaîne de caractères.

(j'ai ptetre oublié de mettre http. devant -_-')

EDIT :

non j'ai bien mis : alert(http.reponseText);
Si je mets dans if http.status == 200 -> rien ne se passe
Si je mets dans bouger() -> alert : message : undefined


RE: Ajax, aide svp - Sephi-Chan - 04-11-2007

Pour la variable responseText, tu as oublié :
  • Le s : c'est response, et pas reponse.
  • la classe appelante : à savoir l'instance de ton objet XMLHttpRequest que tu as appelé http.


Sephi-Chan


RE: Ajax, aide svp - V1nc3 - 04-11-2007

et dans cette partie :
Code PHP :
<?php 
function affichage_result()
{
if(
http.readyState == 4)
{
if(
http.status == 200)
{
//j'ai quoi a mettre ici?
}
else
{
//et la?
}
}
}

Et ici :
Code PHP :
<?php 
function bouger(x, y)
{
http = createRequestObject();
http.open('post', 'pages/requetes_ajax.php', true);
http.onreadystatechange = affichage_result();
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send('data_x='+x+'&data_y='+y);
alert(http.responseText); //quand je mets ici ça me fait une alert vide alors que dans le fichier php : echo '<p>test</p>';
location.reload();
}

Merci a tous encore pour l'aide, une fois que j'aurai tous qui fonctionnera impec ça sera bon, j'aurai compris ^^


RE: Ajax, aide svp - Sephi-Chan - 04-11-2007

Le problème c'est que tu avances d'un pas et recule de deux.

Tu n'as toujours pas compris l'ordre des choses, tu coup tu bidouilles et au final tu n'es pas plus avancé :
  1. Ta fonction Javascript bouger() appelle un script PHP avec open() et lui envoie des données avec send().
  2. La page PHP appelée s'exécute et effectue donc les actions normales qui sont contenues dedans. Le fichier peut renvoyer une sortie XML (en l'occurrence xHTLM).
  3. S'il y a bel et bien une sortie XML (par exemple echo 'Blabla';), elle est stockée dans la propriété responseText de ton objet.
  4. Tu peux utilise cette propriété responseText une fois que la réponse de la requête est parvenue : c'est à dire une fois que la propriété readyState est à 4 et statut à 200.

Voila le fonctionnement, je te laisse maintenant réfléchir seul avec ces données. Tu ne comprendras pas le fonctionnement si tu te laisses assister.


Sephi-Chan


RE: Ajax, aide svp - V1nc3 - 04-11-2007

Donc si j'ai bien suivi, je dois avoir ça :

Code PHP :
<?php 
function affichage_result()
{
if(
http.readyState == 4)
{
if(
http.status == 200)
{
alert(http.responseText);
}
else
{
alert('La connexion n\'as pas été établie');
}
}
}

et ma fonction :
Code PHP :
<?php 
function bouger(x, y)
{
http = createRequestObject();
http.open('post', 'pages/requetes_ajax.php', true);
http.onreadystatechange = affichage_result();
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send('data_x='+x+'&data_y='+y);
location.reload();
}

Si c'est bien ça : le résultat est que je n'ai aucune des deux alert ...


RE: [résolu pour le moment :P] Ajax, aide svp - Sephi-Chan - 04-11-2007

Je viens de trouver le problème. J'avais pas fais attention mais c'est tout bête. Il ne faut pas mettre les parenthèses à la fonction de Callback. On indique juste le nom de la fonction, en l'occurrence affichage_result.

Code PHP :
<?php 
function affichage_result(){
if(
http.readyState == 4){
if(
http.status == 200){
alert(http.responseText);
}
}
}

function
bouger(x, y)
{
http = createRequestObject();
http.open('post', 'pages/requetes_ajax.php', true);
http.onreadystatechange = affichage_result;
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send('data_x='+x+'&data_y='+y);
}

Voila les bonnes fonctions Javascript. Avec ça tout devrait rentrer dans l'ordre.


Sephi-Chan, ajoute une encoche à sa souris...


RE: [résolu pour le moment :P] Ajax, aide svp - X-ZoD - 04-11-2007

merci d'avoir pris le relais sephi chan Big Grin
jallais finir par lui demander son numéro de téléphone
ca devenait un irc plus qu'un forum Big Grin


RE: [résolu pour le moment :P] Ajax, aide svp - V1nc3 - 04-11-2007

On a fini ça sur msn ^^
Alors ué limite Tongue