在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--数组去重

将数据从 javascript forEach 循环中的 php 数组发送到 ajax 调用的 url

PHP 使用php循环分配的Javascript数组

在Javascript中循环遍历数组的元素[重复]

PHP数组到javascript循环与json_encode [关闭]

每个循环中的有序 JavaScript Promise