JeuWeb - Crée ton jeu par navigateur
[Résolu] Récuperer plusieurs infos d'une page appelée en 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 : [Résolu] Récuperer plusieurs infos d'une page appelée en Ajax (/showthread.php?tid=5451)

Pages : 1 2 3 4 5


RE: Récuperer plusieurs infos d'une page appelée en Ajax - Kassak - 30-05-2011

Et là il est encore vide ?


RE: Récuperer plusieurs infos d'une page appelée en Ajax - Sephi-Chan - 30-05-2011

Là ça contient un nombre : 346.


RE: Récuperer plusieurs infos d'une page appelée en Ajax - Kassak - 30-05-2011

Là il devrait contenir la chaine attendue maintenant.


RE: Récuperer plusieurs infos d'une page appelée en Ajax - Sephi-Chan - 30-05-2011

Ça retourne bien la chaîne JSON :


{"foo":"Bar","bar":["Endive","P\u00e2t\u00e9"]}

Mais l'erreur est toujours celle qu'on rencontre avec responseText vide.
Ajoute un console.log(xhr.responseText); avant la fameuse ligne 16.




RE: Récuperer plusieurs infos d'une page appelée en Ajax - Kassak - 30-05-2011

Vala.. j'obtiens : (an empty string) Oo


RE: Récuperer plusieurs infos d'une page appelée en Ajax - Sephi-Chan - 30-05-2011

Je n'ai pas trop confiance en ta fonction getXhr qui ne renvoie pas une nouvelle instance. Ça empeste l'effet de bord.

Je te conseille de passer à jQuery, qui te permettra de réécrire ta fonction move ainsi :


function move(x, y, map){
var data = { posx: x, posy: y, map: map };

$.post('deplacement.php', data, function(receivedData){
console.log(receivedData);
LoadDiv("map", "test.php");
LoadDiv1("menu_joueur", "menu_joueur.php");
});
}

Ça devrait aller mieux. En plus ça vire pas mal de code parasite.

Si ça ne marche pas, c'est que jQuery n'arrive pas à deviner que ton application renvoie du JSON. Pour lui donner cette information, il faut que ta page deplacement.php lui donne le bon header. Pour cela, il faut que tu ajoutes le code suivant avant de faire le echo.


header('Content-Type: application/json');



RE: Récuperer plusieurs infos d'une page appelée en Ajax - Kassak - 30-05-2011

Ahah, tu y tiens à ton Jquery =)

Je vais essayer oui...mais mon problème est quand même bizare.


RE: Récuperer plusieurs infos d'une page appelée en Ajax - Sephi-Chan - 30-05-2011

Je n'y tiens pas spécialement, c'est juste que ton code n'est pas de bonne qualité (no offense, c'est pas facile avec de l'artisanal) : il provoque effets de bords et a un résultat inattendu.
Je te propose donc une alternative de qualité, bien plus robuste et qui t'évitera des problèmes tout en rendant ton code beaucoup plus facile à lire, à écrire et à maintenir.


Si tu tiens à conserver ton approche artisanale, je te suggère d'opter pour une méthode getXhr() plus robuste. Comme celle-ci :


function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else {
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}

Et l'utiliser comme ceci :


function move(x,y,map){
xhr = getXhr();
xhr.open("POST",'deplacement.php',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("posx="+x+"&posy="+y+"&map="+map);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)){
LoadDiv("map","test.php");
LoadDiv1("menu_joueur","menu_joueur.php");
var receivedData = JSON.parse(xhr.responseText);
}
}
}

Après tu fais comme tu veux, c'est toi qui voit ce que tu préfères entre les quelques lignes que je t'ai proposé et ce bazar.


RE: Récuperer plusieurs infos d'une page appelée en Ajax - Kassak - 30-05-2011

Et bien...j'arrive enfin à voir ce *** d'alert !

Merci pour ton aide Sephi Chan, et je vais fouiller un peu ce jquery afin de voir si je trouve des choses intéressantes =)


RE: Récuperer plusieurs infos d'une page appelée en Ajax - Sephi-Chan - 30-05-2011

Hé hé. Je t'en prie. Smile