我有一个回显地理定位值的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>
答案 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]]
的字符串。在循环之外,将它包装在脚本块中并将其输出到页面。