使用JSON将PHP数组传递给javascript

使用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

好吧,我知道以前有人问过这个问题,我也尝试过解决方法,但由于某些原因,它们对我不起作用,所以我请求一些帮助。我还没有使用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>
我得到[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>