![]() |
[Résolu][jQuery] Un responseText vide qui n'est pes censé l'être ! - 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][jQuery] Un responseText vide qui n'est pes censé l'être ! (/showthread.php?tid=2548) |
[Résolu][jQuery] Un responseText vide qui n'est pes censé l'être ! - Sephi-Chan - 12-04-2008 Salut tout le monde. ![]() Je viens demander de l'aide au sujet de jQuery. Je suis en effet en train de faire quelques essais d'Ajax (autrement qu'avec les méthodes "simples" et je fais face à un problème. Code PHP :
La propriété loaded_html.responseText est vide, alors que Firebug l'indique comme contenant ce qu'elle devrait contenir, à savoir le code source de la page appelée. C'est très troublant car je n'ai jamais eu ce problème alors que j'ai déjà fais de l'Ajax avec jQuery à plusieurs reprises sans jamais rencontrer ce problème. Et le pire, c'est qu'en utilisant le code qui suit, le contenu de la page appelante est bien remplacé par celui la page appelée. Code PHP :
Quelqu'un saurait-il ce qu'il se passe ? Car cette bizarrerie me troue le… Sephi-Chan RE: [jQuery] Un responseText vide qui n'est pes censé l'être ! - Harparine - 12-04-2008 Tu as essayé d'afficher loaded_html.responseText dans une div vide plutôt que via un alert ? Tu saurais si c'est l'affichage avec alert qui bugue... RE: [jQuery] Un responseText vide qui n'est pes censé l'être ! - Sephi-Chan - 12-04-2008 Oui j'ai essayé les différents moyens d'afficher. J'ai une piste de solution (sans en avoir pour l'explication). Code PHP :
La propriété responseText est donc retourné par la fonction appelée sur l'événement success. Cette façon de faire avec est assez obscure pour moi. Le problème est donc résolu mais si un gourou de jQuery sait pourquoi responseText n'est pas utilisable de base, je serais tout ouïe. ![]() Sephi-Chan RE: [jQuery] Un responseText vide qui n'est pes censé l'être ! - NicoMSEvent - 13-04-2008 [code:javascript] $('a').click(function(){ var loaded_html = $.ajax({ url : $(this).attr('href') }); //ici tu lance le chargement ajax alert(loaded_html.responseText); //juste après (il n'a pas encore eu le temps de retourner le résultat de ta requete) tu essaie d'afficher le résultat de ta requete. return false; }); $('a').click(function(){ $.ajax({ url : $(this).attr('href'), success : function(returned_data){ // ici, dès que le résultat de la requete est prêt alert(returned_data); //tu affiche ce résultat } }); return false; }); [/code] La programmation événementielle, c'est une autre manière de penser que le procédural ![]() RE: [jQuery] Un responseText vide qui n'est pes censé l'être ! - naholyr - 13-04-2008 Ce n'est pas spécialement le fait que ce soit évènementiel, c'est surtout que c'est un appel asynchrone. Quand tu appelles $.ajax() en mode "asynchrone" (par défaut), il n'attend pas que la réponse ait été reçu pour rendre la main. Ce que tu voulais faire aurait fonctionné avec un appel en mode "synchrone". Voir la page http://docs.jquery.com/Ajax/jQuery.ajax l'onglet "Options", tu vois qu'il y a l'option "async" que tu dois mettre à false pour faire du synchrone. Mais de toute façon, même en mode synchrone il vaut mieux mettre ta fonction de traitement de resultat dans "success" ou dans "error" car sinon tu n'auras tout simplement pas de traitement d'erreur ![]() RE: [jQuery] Un responseText vide qui n'est pes censé l'être ! - Sephi-Chan - 13-04-2008 Ça ne m'intéresse pas de faire du synchrone, je perds l'intérêt de la chose en bloquant le navigateur. Je pense donc que le problème ne vient pas de là puisque Firebug me sort le résultat que j'attends. En utilisant : Code PHP :
Ce qui m'intrigue, c'est juste la différence entre l'affichage et le résultat donné par Firebug pour responseText. Sephi-Chan RE: [jQuery] Un responseText vide qui n'est pes censé l'être ! - naholyr - 13-04-2008 Il y a un léger délai qui s'est passé quand firebug t'affiche la valeur, ce délai est suffisant pour que la variable ait été correctement remplie, tout simplement. En effet il affiche les valeurs des variables en temps réel, le temps que tu déplaces ta souris sur le nom de variable la page demandée par l'appel Ajax a répondu et le responseText n'est donc plus vide. |