【问题标题】:Write to javascript array within php loop在php循环中写入javascript数组
【发布时间】: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>

【问题讨论】:

    标签: php javascript arrays html canvas


    【解决方案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]] 的字符串。在您的循环之外,您将其包装在脚本块中并将其输出到页面。

        【讨论】:

          猜你喜欢
          • 2013-06-16
          • 1970-01-01
          • 2013-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多