[AJAX/PHP] Executer du javascript provenant d'un php

Executer du javascript provenant d'un php [AJAX/PHP] - HTML/CSS - Programmation

Marsh Posté le 04-06-2009 à 23:41:56    

Bonsoir,
 
J'utilise jQuery, et j'ai un petit souci pour executer du javascript de manière asyncrone.
Je m'explique :
 
J'utilise également l'api GoogleMaps, et je souhaite creer des Gmarkers.
J'ai une page, page.php, qui fait des appel a la bdd pour generer du javascript avec des données provenant de ma bdd. L'output de page.php est de ce type :

Code :
  1. map.addOverlay(new GMarker(new GLatLng(13.37,13.37))); map.addOverlay(new GMarker(new GLatLng(19.89.,19.89)));


 
Et j'aimerai executer ce javascript suivant les interactions, j'ai donc dans un evenement quelconque :
 

Code :
  1. var map = new GMap2(document.getElementById("map" ));
  2. [...]
  3. $.ajax({
  4. type: "GET",
  5. url: "php/page.php",
  6. dataType: "script",
  7. });


 
Ca ne fonctionait pas du tout, j'ai mis du temps m'apercevoir (betement), que cetait car dans page.php, le javascript generé ne dispose pas de l'objet "map".
Je ne sais pas comment faire, passer l'objet a ma page via l'AJAX ? Ca me parait peu faisable vu l'objet.
 
J'aimerai bien pouvoir simplement executer l'output de ma page.php, quelque chose du genre
 

Code :
  1. $.ajax({
  2. type: "GET",
  3. url: "php/fill_map.php",
  4. success : function(msg) {
  5.  EXECUTER(msg);
  6. }
  7. });


 
Merci de votre aide,
 
 
EDIT : Apres reflexion, je pourrais renvoyer une chaine formaté de type "13.37+13.37$19.89+19.89", et traiter dans le success la chaine, creer un array, puis boucler, et construire mes map.addOverlay.. Mais je prefere construire le javascript via php.


Message édité par vhAnton le 04-06-2009 à 23:46:47
Reply

Marsh Posté le 04-06-2009 à 23:41:56   

Reply

Marsh Posté le 05-06-2009 à 09:38:48    

t'as reflexion est la bonne, le php et le javascript ne sont pas fait pour se passer des objets complexe. Le mieux serait encore que le php te renvoie les info en JSon et que ton javascript traites les données et gère les map

Reply

Marsh Posté le 05-06-2009 à 11:15:05    

Merci.
Ce qui m'arrange peu.. =(
Si je n'ai pas d'autre choix je me ferai a l'idée, m'enfin bon.
Pas d'autres suggestions ?

Reply

Marsh Posté le 05-06-2009 à 13:45:31    

une sérialisation de l'objet en json que tu passes en get à ton php peut-être?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-06-2009 à 14:20:33    

Je vient d'entendre parler de la foncton eval() (honte sur moi, je connais peu le javascript), c'est deconseillé ?

Reply

Marsh Posté le 05-06-2009 à 14:27:40    

faut faire attention à ce qu'on met dedans (éviter une chaîne de caractère dont le contenu proviendrait d'une saisie utilisateur par ex)...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-06-2009 à 14:51:28    

  1. $.ajax({
   2. type: "GET",
   3. url: "php/fill_map.php",
   4. success : function(msg) {
   5.  eval(msg);
   6. }
   7. });
 
Ca serait ca en gros, ducoup ca vient d'un appel ajax vers une page php, je m'y connais pas bien en failles/hack, je sais pas si c'est faisable de tromper l'appel ajax, mais je pense pas.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed