好的所以我知道之前已经问过这个问题并且我已经尝试了解决方案,但由于某些原因它们不适合我,所以我要求一些帮助。我还没有使用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但由于某种原因不会显示?
谢谢,
-Alex
编辑:
所以我从文本文件中获取了一系列数组。我使用这些数组作为字符串在页面上显示,然后将它们转换为浮点数组。当我使用:
回显其中一个浮动数组,例如$ Z_Ausmassecho 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);
}
};
它不起作用。在脚本中获取浮点数组至关重要,因为脚本需要根据它们进行计算,然后将计算结果显示给用户。
答案 0 :(得分:2)
当我执行代码时,它可以正常工作。
第一次尝试失败,因为您无法附加完整的数组。你需要单独追加数组中的每个元素。
第二次尝试正常。您只需删除第一次尝试使其工作,因为第一次尝试停止执行javascript。
修改的
我试着为你修复代码。我使用了一个只有文本的简单数组。 您想要显示的元素没有引用
的ID<divShow></divShow>//wrong
<div id="divShow"></div>//right
循环通过完整的数组你不想硬编码最大元素数量使用arr.length作为'for'-loop的最大值。
您无法直接将原始文本附加到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>