簡體   English   中英

將帶有json_encode的php數組傳遞給js處理程序時出錯

[英]Error passing php array with json_encode to js handler

我聲明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 }錯誤: Uncaught SyntaxError: Unexpected token }

打開瀏覽器調試器: (function(event){changePhoto(2,[ })

您在這里的報價會有問題。 您的json中將包含一些“,並且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); 在循環之外,因為它們不再更改。 但是現在您要做幾次相同的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM