好的,我知道以前已经有人问过这个问题,并且我已经尝试过这些解决方案,但由于某种原因,它们对我不起作用,所以我寻求一些帮助。我还没有使用过 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/