使用JSON将PHP数组传递给javascript
好吧,我知道以前有人问过这个问题,我也尝试过解决方法,但由于某些原因,它们对我不起作用,所以我请求一些帮助。我还没有使用JSON,所以可能这有点傻,但我不知道 代码如下:使用JSON将PHP数组传递给javascript,javascript,php,arrays,json,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="bu
<?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>
我得到[25.3999961853121.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);
}
};
函数计算(){
var Z_Ausmass=;
对于(var o=0;o当我执行代码时,它工作正常
第一次尝试失败,因为无法追加完整数组。需要单独追加数组中的每个元素
第二次尝试可以正常工作。您只需删除第一次尝试即可使其正常工作,因为第一次尝试会停止javascript的执行
编辑
我试图为您修复代码。我使用了一个只有文本的简单数组。
要在中显示的元素没有引用到的id
<divShow></divShow>//wrong
<div id="divShow"></div>//right
因此,工作代码如下所示:
<?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>
函数showArray(){
var-arr=;
//将文本放在文本节点中,附加到div
对于(变量i=0;i
浏览器控制台中是否显示任何消息?使用console.log
进行调试。这会更有帮助。在分配到array
后立即尝试执行console.log(数组);
,并检查浏览器控制台(在Chrome中点击F12)。您还可以检查源代码,看看是否有(未捕获)您的脚本引发错误。好的,我在Chrome和Firefox中查看过,这在Firefox中出现了:HTML文档的字符编码未声明。如果文档包含US-ASCII范围之外的字符,则在某些浏览器配置中,文档将以乱码文本呈现。页面的字符编码必须取消在文档或传输协议中声明。这意味着我必须在html标记中设置编码,也许这就是阻碍?-1发现超过1700个结果,因此“使用JSON将PHP数组传递给javascript”我不需要下载包或任何东西,应该吗?不需要进行JSON解析。浏览器将自动完成该操作当加载te页面时,我感到非常不安。@hoos93我修复了代码,并解释了为什么我在回答中修复了parst。@daanTrancebuzz好的,您编写的新代码是有意义的,但由于某些原因它仍然不起作用。我原以为这可能是因为我的数组包含浮点数,但后来我仅用您拥有的代码进行了尝试,但仍然没有成功。是吗我需要在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>