将带有json_encode的php数组传递给js处理程序时出错

时间:2017-12-27 11:40:44

标签: javascript php arrays

我声明了php数组,我用查询中的字符串填充它们。 我必须将此数组传递给页面中元素的处理程序。 处理程序无法读取此数组。

PHP:

    $names = $paths = $infos= [];
    $i = 0;
    while($row = $result->fetch_row())
    {
            $names[$i]= $row[0];
            $paths[$i]= $row[1];
            $infos[$i]= $row[2];
            $i++;
    } 
    ...
    for($i = 1; $i < ($length/8)+1  ; $i++)//arrotonda per eccesso
    {

        $jsNames = json_encode($names);
        $jsInfo  = json_encode($infos);
        $jsPaths = json_encode($paths);
        //echo $jsNames."<br>";
        //echo $jsInfo."<br>";
        //echo $jsPaths."<br>";
        ?>
        <a href="#" onClick="changePhoto(<?php echo $i.','.$jsNames.','.$jsInfo.','.$jsPaths ?>)" class="w3-bar-item w3-white w3-button"> <?php echo $i ?></a>

JS:

function changePhoto(num,names,paths,infos){
 //nothing
 }

浏览器错误:Uncaught SyntaxError: Unexpected token }

打开浏览器调试器:        (function(event){changePhoto(2,[ })

1 个答案:

答案 0 :(得分:2)

这里的引号会有问题。你的jsons会有一些“在其中,你的html属性也被包含在内”。 所以改变

onClick="changePhoto(<?php echo $i.','.$jsNames.','.$jsInfo.','.$jsPaths ?>)"

onClick='changePhoto(<?php echo $i.','.$jsNames.','.$jsInfo.','.$jsPaths ?>)'
// note the single-quotes here!

旁注:
你应该将这些行$jsNames = json_encode($names);放在循环之外,因为它们不会再改变。但是现在你做了好几次同样的工作。