JeuWeb - Crée ton jeu par navigateur
Comment interpréter le JS provenant d'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 : Comment interpréter le JS provenant d'Ajax ? (/showthread.php?tid=4902)

Pages : 1 2


Comment interpréter le JS provenant d'Ajax ? - Argorate - 10-06-2010

Bonjour,

Voilà mon petit soucis, j'ai du code JS renvoyé par mon Ajax et que j'aimerais qui soit exécuté. Le problème comme vous devez le savoir c'est que le JS provenant du xhr_object.responseText n'est pas interprété...

Donc quel méthode/astuce peut t-on utilisé pour que cela fonctionne? J'ai souvent entendu parler d'eval() mais j'aimerais bien plus ample explication.

Merci.


RE: Comment interpréter le JS provenant d'Ajax? - My Hotel - 10-06-2010

Salut!

En gros, eval exécute le code JS passé en argument. La même fonction existe en PHP, mais il me semble qu'en JS c'est une source de nombreuses failles. Normalement, tu devrais pas avoir à faire ça je pense.
Faudrait que tu nous explique la situation, mais il y a obligatoirement un moyen de faire sans... J'ai jamais vu de l'AJAX qui renvoie du JS...

Et tu devrais aussi utiliser une bibliothèque JS (jquery exemple), parce que le xhr_object, c'est pas l'idéal. A moins que tu gères les codes d'erreur, le JSON, que ça fonctionne sur un max de navigateurs...

Bye


RE: Comment interpréter le JS provenant d'Ajax? - Argorate - 10-06-2010

Hello!

En faite je recharge le contenu du cadre principal via ajax sauf que suite a l'action, il y a un div qui apparait. Et j'aimerais exécuter une fonction pour qu'il ne le fasse qu'après x millisecondes et pas instantanément... donc j'avais dans l'idée de faire un setTimeout...

Donc qu'es ce que tu proposes en mon cas?


PS: concrètement en quoi "xhr_object" pose problème?


RE: Comment interpréter le JS provenant d'Ajax? - Sephi-Chan - 10-06-2010

Il faut évaluer le script contenu. Le problème, c'est qu'avec eval(), c'est sale et moins sûr que le parser qu'implémentent les librairies.
Et XMLHttpRequest ne devrait pas être utilisé tel quel puisqu'il n'est pas cross-browser, c'est d'ailleurs pour ça que les librairies le wrap dans un objet, pour s'occuper de ça à la place du développeur.


Sephi-Chan


RE: Comment interpréter le JS provenant d'Ajax? - My Hotel - 10-06-2010

Salut,

Je suis pas sur d'avoir bien pigé, mais en gros, tu pourrais faire dans ta fonction qui affiche le cadre principale une instruction setTimeout qui se lance quand l'appel ajax est terminé, pour afficher le div après quelques millisecondes. Et si tu ne peux pas prévoir le nom du div par exemple avant l'appel ajax, soit tu te démerdes pour que y'ait le même nom, soit tu passes le nom avec AJAX avec JSON par exemple.

Sinon, pour xhr_object, c'est moins bien que jQuery parce que (entre autres) : ça gère pas les différents codes d'erreurs nativement (tu dois le coder toi), donc c'est moins bien fait qu'un truc fait par une grosse communauté. Jquery peut aussi recevoir et interpreter du JSON juste en rajoutant un petit paramètre, etc...
Après, ta méthode fonctionnera bien, mais c'est plus bancal qu'un framework JS Wink

Bye


RE: Comment interpréter le JS provenant d'Ajax? - Argorate - 10-06-2010

Oui, effectivement ça marche tout aussi bien en le mettant a coté du rafraîchissement ajax... Même si ça me chagrine dans la façon de faire.

Merci. Smile


RE: Comment interpréter le JS provenant d'Ajax? - php_addict - 10-06-2010

(10-06-2010, 04:48 PM)Argorate a écrit : Donc quel méthode/astuce peut t-on utilisé pour que cela fonctionne? J'ai souvent entendu parler d'eval() mais j'aimerais bien plus ample explication.

j'imagines que tu connais le proverbe "eval is evil" --> http://www.google.fr/#hl=fr&source=hp&q=eval+is+evil&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=7c4d3469c8353fd7

sinon si tu as des parseurs plus légers que de passer par Jquery juste pour ca:
JSONparse -->http://www.json.org/js.html mais cela necessite que les données transférées soient en JSON...


RE: Comment interpréter le JS provenant d'Ajax? - Ter Rowan - 11-06-2010

moi la première question qui me vient à l'esprit, c'est quelle est la taille et la variabilité du javascript à charger en dynamique

en effet en dehors de découper le chargement de gros code javascript ce qui pourrait être logique pour éviter des lenteurs au chargement de page, pourquoi ne pas charger les fonctions javascript au démarrage et de n'envoyer en ajax que ce qui va bien? (le nom de la méthode, les valeurs des paramètres à prendre)


RE: Comment interpréter le JS provenant d'Ajax? - Sephi-Chan - 11-06-2010

(10-06-2010, 04:57 PM)My Hotel a écrit : J'ai jamais vu de l'AJAX qui renvoie du JS...

Pourtant ça se fait beaucoup.


(10-06-2010, 10:57 PM)php_addict a écrit :
(10-06-2010, 04:48 PM)Argorate a écrit : Donc quel méthode/astuce peut t-on utilisé pour que cela fonctionne? J'ai souvent entendu parler d'eval() mais j'aimerais bien plus ample explication.

j'imagines que tu connais le proverbe "eval is evil" --> http://www.google.fr/#hl=fr&source=hp&q=eval+is+evil&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=7c4d3469c8353fd7

sinon si tu as des parseurs plus légers que de passer par Jquery juste pour ca:
JSONparse -->http://www.json.org/js.html mais cela necessite que les données transférées soient en JSON...

Le problème d'Argorate n'est pas lié à JSON (je ne pense pas qu'il l'utilise) mais bien d'interpréter son responseText comme du Javascript. Si son responseText contient alert("Endive !");, ça doit effectivement ouvrir une boîte d'alerte.

Pour faire ça proprement, il faut que la page qui sert du Javascript a intérpréter rende le MIME-type "text/javascript". En PHP, ça se fait avec :


header("Content-Type: text/javascript");

Ensuite, tout ça se fait très facilement avec des librairies (et ne devrait pas être fait autrement à moins d'avoir une très solide maîtrise de Javascript pour écrire soit-même un parser fiable) :

Avec Prototype, ça se fait tout seul sous réserve que le MIME-type indiqué soit renvoyé :


new Ajax.Request('url', { method: 'get' });


Avec jQuery :


$.getScript('url');


Sephi-Chan


RE: Comment interpréter le JS provenant d'Ajax? - jo_link_noir - 11-06-2010

(11-06-2010, 11:02 AM)Sephi-Chan a écrit : Ensuite, tout ça se fait très facilement avec des librairies (et ne devrait pas être fait autrement à moins d'avoir une très solide maîtrise de Javascript pour écrire soit-même un parser fiable)

Écrire un parseur ? Je comprend pas pourquoi tu dis ça en fait :heuuu: