PHP / JS:多维PHP数组作为Javascript函数参数

时间:2015-07-29 14:04:32

标签: javascript php arrays

我有一个包含许多复杂变量的大型php页面,我正在尝试创建可在某些点播放视频的按钮。

我目前有

pack()

echo json_encode($ HCount)看起来像

<script>
    function generateJSON(){        
        var ARRAY = <?php echo json_encode($HCount) ?>;
        var vid = document.getElementById('my_video');
        vid.currentTime = parseInt(ARRAY[0].eventTime);
    }
</script>
<button id="goToTime" onClick="javascript:generateJSON()">genJS</button>

这段代码可行,但我希望generateJSON的争论是JSON本身。 即。

[{"gameID":"212345564","eventTime":"2693","plID":"523dfs",
"evArray":{"5645":"Cuyta","11245230":"98.0","2229":"","3318":"","15":""}},
{"gameID":"212345564","eventTime":"2293","plID":"523dft",
"evArray":{"5645":"Pkyyt","11245230":"28.0","2229":"","3318":"","11":""}}]

^^此代码适用于简单数组,例如

<script>
    function generateJSON(ARRAY){       
        var vid = document.getElementById('my_video');
        vid.currentTime = parseInt(ARRAY[0].eventTime);
    }
</script>
<button id="goToTime" onClick="javascript:generateJSON(<?php echo json_encode($HCount) ?>)">genJS</button>

但不是我需要的多维案例,Chrome上产生的错误是

<?php
        $timeArray = array();
        $timeArray[] = 345.1;
        $timeArray[] = 789.1;
        $timeArray[] = 1002.1;
        $timeArray[] = 1200.12;
?>

按钮后但没有;在线。我试过加入;没有太多运气的PHP json_encode。任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

问题是现在您正在将JSON打印到由引号括起的元素属性。你需要转义它才能工作,否则JSON中的引号会破坏元素。试试这个:

<button id="goToTime" onClick="generateJSON(<?php echo htmlentities(json_encode($HCount)) ?>)">genJS</button>