在php循环中写入javascript数组
Posted
技术标签:
【中文标题】在php循环中写入javascript数组【英文标题】:Write to javascript array within php loop 【发布时间】:2011-01-26 04:26:10 【问题描述】:我有一个回显地理位置值的 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>
【问题讨论】:
【参考方案1】:你试过了吗
var myJavascriptData = <?= json_encode($php_data) ?>;
【讨论】:
【参考方案2】:您可能希望在 PHP 中使用 JSON library。
【讨论】:
你有一个例子来说明它是如何工作的吗?对于一个数组来说,这可能是矫枉过正...【参考方案3】:将数据传递给浏览器的 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 ......
或者,您可以考虑使用 AJAX 库,例如原型或 dojo 它具有用于从“REST”类型服务访问数据的所有 javascript 组件。
然后您需要编写一个单独的服务来获取您的页面所需的 XML 或 JSON。
【讨论】:
【参考方案4】:我的建议是将脚本块转储到输出并将它们设置在变量中。
数组定义实际上必须在输出到页面的 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]]
的字符串。在您的循环之外,您将其包装在脚本块中并将其输出到页面。
【讨论】:
以上是关于在php循环中写入javascript数组的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 javascript forEach 循环中的 php 数组发送到 ajax 调用的 url