2010-03-11 115 views
2

我有一個正在回顯地理位置值的php循環。我怎樣才能把它寫到一個javascript數組中,然後我可以用它們在HTML5畫布上繪製點?在php循環中寫入javascript數組

PHP的循環是如下

<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> 

回答

5

你嘗試

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

做到了這一招,謝謝! – 2010-03-11 18:57:08

2

你可能想利用JSON library爲PHP。

+0

有你的,將如何工作的例子嗎?這可能是一個陣列的矯枉過正... – 2010-03-11 14:55:50

0

將數據傳遞給瀏覽器的javascript程序的最簡單方法是將其放入「隱藏的」html表格中。

的HTML看起來應該像

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>"; 

此表,然後從你的JavaScript容易accessable: -

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 ...... 
} 

或者你可以看看使用AJAX庫像原型或道場 這具有用於訪問來自「REST」類型服務的數據的所有JavaScript組件。

然後您需要編寫一個單獨的服務來獲取您的頁面所需的XML或JSON。

0

我的建議是將腳本塊轉儲到輸出並將它們設置爲變量。

數組定義將不得不實際處於輸出到頁面的javascript代碼中。

例如,你需要的是這樣的輸出:

<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> 

有更有效的方式來創建靜態數組,但是這僅僅是一個例子。

一個更有效的方法(就代碼而言)將是建立一個定義字面數組的字符串,然後轉儲出一個javascript定義。輸出會是這樣的:

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

所以在循環PHP中,你建立這將最終包含var coords = [[123.45,987.65],[234.56,876.54]]的字符串。在循環之外,將其包裝在腳本塊中並將其輸出到頁面。