2010-03-11 118 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]]的字符串。在循环之外,将其包装在脚本块中并将其输出到页面。