写入php循环中的javascript数组

时间:2010-03-11 01:08:49

标签: php javascript arrays html5 canvas

我有一个回显地理定位值的php循环。如何让它将这些值写入javascript数组,以便我可以使用它们在HTML5画布上绘制点?

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>

4 个答案:

答案 0 :(得分:5)

你试过吗

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

答案 1 :(得分:2)

您可能希望利用PHP的JSON library

答案 2 :(得分: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轻松访问此表: -

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

或者你可以看看使用像prototype或dojo这样的AJAX库 其中包含用于从“REST”类型服务访问数据的所有javascript组件。

然后,您需要编写一个单独的服务,以获取页面所需的XML或JSON。

答案 3 :(得分: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]]的字符串。在循环之外,将它包装在脚本块中并将其输出到页面。