2010-03-11 7 views
2

J'ai une boucle php qui fait écho aux valeurs de géolocalisation. Comment puis-je l'obtenir pour écrire ces valeurs dans un tableau javascript, afin que je puisse les utiliser pour tracer des points sur un canevas HTML5?Écrire dans un tableau javascript dans une boucle php

La boucle php est la suivante

<ul id = "geo-list"> 
    <?php foreach($data as $phrase) { ?> 
     <li><?php 
      if ($phrase->geo != false) { 
       echo " | From ("; 
       echo $phrase->geo->coordinates[0]; 
       echo ","; 
       echo $phrase->geo->coordinates[1]; 
       echo ")"; 
      } else { 
       echo " | No Location Data"; 
      } 
     ?> 
     </li> 
    <?php } ?> 
</ul> 

Répondre

5

Avez-vous essayé

var myJavascriptData = <?= json_encode($php_data) ?>; 
+0

qui a fait l'affaire, merci! –

2

Vous pouvez profiter de la JSON library pour PHP.

+0

avez-vous un exemple de comment cela pourrait fonctionner? Il pourrait être surpuissant pour un tableau ... –

0

Le moyen le plus simple de transmettre des données au programme javascript d'un navigateur consiste à les placer dans une table html «cachée».

Le html devrait ressembler à quelque chose comme

echo "\n<TABLE style='display: none;' id='DATTAB' >" ; 
get_rows(); 
while ($cf = next_row()) { 
    echo "\n <TR>"; 
    echo "\n<TD>" . $cf['KEY'] . "</TD>"; 
    echo "\n<TD>" . $cf['COL1'] . "</TD>"; 
    echo "\n<TD>" . $cf['COL2'] . "</TD>"; 
    echo " </TR>"; 
    } 
    echo "\n</TABLE>"; 

Ce tableau est alors facilement accessible à partir de votre javascript: -

var dtab = document.getElementById("DATATAB"); 
var rows = dtab.getElementsByTagName("tr"); 
for (var r = 0; r < rows.length ; r++) { 
    row = rows[r]; 
    item_key = row.cells[0].innerHTML; 
    item_col1 = row.cells[1].innerHTML; 
    item_col2 = row.cells[2].innerHTML; 
    // do your thing here ...... 
} 

Sinon, vous pouvez envisager d'utiliser les bibliothèques AJAX comme prototype ou dojo qui avoir tous les composants javascript pour accéder aux données d'un service de type "REST".

Vous devez ensuite écrire un service distinct qui obtient le code XML ou JSON requis pour votre page.

0

Ma suggestion est de vider un bloc de script vers la sortie et de les définir dans une variable.

La définition de tableau devra en fait se trouver dans le code javascript qui sera affiché sur la page.

par exemple, vous aurez besoin d'une sortie de quelque chose comme:

<script type="text/javascript"> 
    var coords = new Array(2); 
    coords[0] = new Array(2); 
    coords[0][0] = 123.45; 
    coords[0][1] = 987.65; 
    coords[1] = new Array(2); 
    coords[1][0] = 234.56; 
    coords[1][1] = 876.54; 
</script> 

Il existe des moyens plus efficaces pour créer ce tableau statique, mais cela est juste un exemple.

Une méthode plus efficace (en termes de code) consisterait à créer une chaîne définissant le tableau littéral, puis à en extraire une définition javascript. La sortie serait quelque chose comme:

<script type="text/javascript"> 
    var coords = [[123.45,987.65],[234.56,876.54]]; 
</script> 

donc dans votre boucle dans php, vous souhaitez construire une chaîne qui finalement contenir var coords = [[123.45,987.65],[234.56,876.54]]. En dehors de votre boucle, vous l'enveloppez dans les blocs de script et l'affichez sur la page.

Questions connexes