javascript - 使用 JSON 将 PHP 数组传递给 javascript

标签 javascript php arrays json

好的,我知道以前已经有人问过这个问题,并且我已经尝试过这些解决方案,但由于某种原因,它们对我不起作用,所以我寻求一些帮助。我还没有使用过 JSON,所以也许这很愚蠢,但我不知道......

代码如下:

<?php
    $array;

    #successful attempt to display array with json_encode in php
    echo json_encode($array);
?>
<html>
<input id="show" type="button" onclick="showArray()" value="showArray">
<divShow>
</divShow>
<script>
function showArray(){
var array = <?php echo json_encode($array); ?>;

    //Failed attempt to display array in the div field show
    document.getElementById("divShow").appendChild(array);

    //Failed attempt to display the array with an alert.
    for(var i=0; i<2; i++){
        alert(array[i]);
    }
};
</script>
</html>

那么大家觉得怎么样呢?我错过了什么吗?是否有可能数组已成功传递给 JavaScript,但由于某种原因无法显示?

谢谢

-亚历克斯

编辑:

所以我从文本文件中获取一系列数组。我使用这些数组作为字符串显示在页面上,然后将它们转换为 float 组。当我回显 float 组之一(例如 $Z_Ausmass)时:

echo json_encode($Z_Ausmass);

我得到[25.39999961853,121.48651123047]。但是,当我使用以下内容通过 javascript 显示数组时:

function calc(){
var Z_Ausmass = <?php echo json_encode($Z_Ausmass); ?>;
    for(var o=0; o<Z_Ausmass.length; o++){
    var textnode = document.createTextNode(Z_Ausmass[o]);
    document.getElementById("divCalc").appendChild(textnode);
    }
};

它不起作用。在脚本中获取 float 组至关重要,因为脚本需要根据它们进行计算,然后将计算结果显示给用户。

最佳答案

当我执行代码时,它工作正常。

第一次尝试失败,因为您无法附加完整的数组。您需要分别追加数组中的每个元素。

第二次尝试工作正常。您只需要删除第一次尝试即可使其工作,因为第一次尝试会停止 javascript 的执行。

编辑

我尝试为您修复代码。我使用了一个仅包含文本的简单数组。 您想要显示的元素没有您引用的 id

<divShow></divShow>//wrong
<div id="divShow"></div>//right

要循环遍历整个数组,您不想对最大元素数进行硬编码,请使用 arr.length 作为“for”循环的最大值。

您不能直接将原始文本附加到 html 元素。您需要为其创建一个 TextNode,然后将该节点附加到 html 元素。

var textnode=document.createTextNode(arr[i]);
document.getElementById("divShow").appendChild(textnode);

所以工作代码将是这样的:

<?php
$array = array("test","text","show");

#successful attempt to display array with json_encode in php
echo json_encode($array);
?>
<html>
<input id="show" type="button" onclick="showArray()" value="showArray">
<div id="divShow">
</div>
<script>
    function showArray(){
        var arr = <?php echo json_encode($array); ?>;

        //Put the text in a text node, append to the div
        for(var i=0; i< arr.length; i++){
            var textnode=document.createTextNode(arr[i]);
            document.getElementById("divShow").appendChild(textnode);
        }
    };
</script>
</html>

关于javascript - 使用 JSON 将 PHP 数组传递给 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23536623/

相关文章:

javascript - angular2 路由器导出登录后无法工作

php - 目标 [Illuminate\Contracts\Debug\ExceptionHandler] 不可实例化

php - ZF2 SOAP "Procedure not present"错误

javascript - 在 HTML URL 中使用数组

ios - 为什么我不能在 Swift 中访问这个数组的第二层?

javascript - 防止 Firebug 删除 HTML 元素

javascript - 使用 HTML 在少数页面中重用垂直按钮组

Javascript IMAP 和 SMTP 客户端?

php - 行级锁定 - MySQL - 用于更新

javascript - 如何使用 JavaScript 动态创建数组?