2017-12-27 167 views
0

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

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,[ })

+0

什么返回评论'echo'es? – panther

+0

你能否明确更新总代码 – kranthi

+0

我敢打赌,你在这里有引号问题。你的jsons会有''',所以试着把onClick =“...”'改成'onClick ='....' – Jeff

回答

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);外循环,因为他们不会改变了。但是现在你多次做同样的工作。