Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1637 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Convertir du texte en code javascript

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Convertir du texte en code javascript

n°2055806
Magg27
Posté le 10-02-2011 à 14:05:01  profilanswer
 

Bonjour,

 

Grâce à cette fonction :

 
Code :
  1. function displaytrace(gpx)
  2. {
  3. var xhr = getXMLHttpRequest();
  4. xhr.onreadystatechange = function() {
  5.  if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
  6.   var javascript=xhr.responseText;
  7.   data(javascript);
  8.  }
  9. };
  10. xhr.open("POST", "ajax.php", true);
  11. xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded" );
  12. xhr.send("GPX="+gpx);
  13. }
 

Je récupère dans ma variable javascript du code javascript généré par ajax.php. Mais lorsque je souhaite exécuter le code celui-ci n'est pas interprété et se comporte comme si c'était du simple texte. La preuve : lorsque je copie/colle le contenu de la variable javascript celui-ci est alors interprétable.

 

Si je n'ai pas été clair n'hésitez pas à me le faire comprendre.

 

Merci pour votre aide.

 


Edit : Pour simplifier l'énoncé de mon problème, une expérience toute bête :

 
Code :
  1. <script type="text/javascript">
  2. var data="new GLatLng(44.131495150, 0.335766823),new GLatLng(44.131733018, 0.336476457),new GLatLng(44.131898035, 0.336892086)";
  3. var poly1 = new GPolyline([data], "#ff0000", 2.5, 0.5, polyOptions);
  4. </script>


Ce script est censé déssiner une trace GPS sur une carte. Mais il ne marche pas.

 
Code :
  1. <script type="text/javascript">
  2. var data=[new GLatLng(44.131495150, 0.335766823),new GLatLng(44.131733018, 0.336476457),new GLatLng(44.131898035, 0.336892086)];
  3. var poly1 = new GPolyline(data, "#ff0000", 2.5, 0.5, polyOptions);
  4. </script>
 

Par contre celui-là marche ...

 


En espérant que cela vous a éclairci la chose ..


Message édité par Magg27 le 10-02-2011 à 14:22:47
mood
Publicité
Posté le 10-02-2011 à 14:05:01  profilanswer
 

n°2055874
billgatesa​nonym
Posté le 10-02-2011 à 16:21:46  profilanswer
 

Bonjour,
 
Le code du haut est un appel classique à Ajax.
Mais il n'est pas très clair

Citation :

var javascript=xhr.responseText;
data(javascript);


Vous avez choisi des noms très étranges pour vos variables et vos fonctions.
Il est assez inhabituel de nommer une variable javascript. Vous ne pourriez pas l'appeler ma_variable, par exemple ?
Il est aussi assez inhabituel de nommer une fonction data. Vous ne pourriez pas l'appeler ma_fonction, par exemple ?
 
Pour débugguer, il faudrait savoir ce que contient votre variable "javascript", et ce que contient votre fonction "data".
Sans cela, on ne peut faire que de la voyance ou de la divination.
 
Dans l'exemple du bas, la bonne syntaxe est en effet de pas mettre de crochets autour de data.
D'ailleurs, pourquoi vouloir mettre des crochets, ce n'est pas l'indice d'un tableau ?

n°2055886
Magg27
Posté le 10-02-2011 à 17:05:18  profilanswer
 

Salut et merci pour ta réponse.

 


billgatesanonym a écrit :


Vous avez choisi des noms très étranges pour vos variables et vos fonctions.

 

En réalité je n'ai pas utilisé ces noms là. C'est juste pour illustrer l'exemple : la variable javascript contient du javascript et la fonction data gère les données renvoyées.

 
billgatesanonym a écrit :


D'ailleurs, pourquoi vouloir mettre des crochets, ce n'est pas l'indice d'un tableau ?

 

C'est pour rassembler un ensemble de commandes.

 

Bon bref, j'ai trouvé la solution tout seul : utiliser la fonction eval() qui permet d'évaluer et d'exécuter le code javascript contenu dans la chaîne.

 

Je m'explique :

 
Code :
  1. function displaytrace(gpx)
  2. {
  3. var xhr = getXMLHttpRequest();
  4. xhr.onreadystatechange = function() {
  5.  if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
  6.   var voll=xhr.responseText;
  7.   data(voll);
  8.  }
  9. };
  10. xhr.open("POST", "ajax.php", true);
  11. xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded" );
  12. xhr.send("Trace_GPX="+gpx);
  13. }
 

Ici on envoie un nom de fichier XML (il s'agit d'un fichier .gpx) à ajax.php. Celui-ci décortique le XML et récupère les informations souhaitées pour ensuite les assembler dans une commande javascript que voici :

 
Code :
  1. new GPolyline([new GLatLng(coord1_lat,coord1_lon),new GLatLng(coord2_lat,coord2_lon), et ainsi de suite], #ff0000, 2.5, 0.5, {geodesic: true})
 

A noter ici l'utilité des crochets.

 

Une fois la commande assemblée, celle-ci est récupérée par la variable voll qui devient paramètre de la fonction data.
A ce moment, la variable voll est une chaîne de caractère contenant ma commande javascript.
Il est alors maintenant facile de l'utiliser avec eval() :

 
Code :
  1. function data(voll)
  2. {
  3. ..................
  4. ..................
  5. ..................
  6. var poly1 = eval(voll); //ici
  7. map.addOverlay(poly1);
 

Si cela peut aider quelqu'un qui se casse la tête avec l'API Google Map, c'est cool  :)

 

Merci A+


Message édité par Magg27 le 10-02-2011 à 17:09:38

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Convertir du texte en code javascript

 

Sujets relatifs
Récupérer une variable Javascript avec AJAXParser du texte dans la langue française.
modifier un code en javascriptCondition Javascript/HTML
Modifier un code ajaxProblème de compilation avec Code Block
déterminer le nombre de lignes d'un fichier texteErreur dans mon code HTML ?
Probleme verification champ formulaire javascript 
Plus de sujets relatifs à : Convertir du texte en code javascript


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR