簡體   English   中英

將PHP數組傳遞給外部Javascript函數

[英]Passing PHP array to external Javascript function

我需要將數組從php傳遞到javascript函數。 我讀到我必須使用json_encode方法,但可能有些錯誤,因為它不起作用...

PHP文件

<?php
    echo "<img id=", $i, " src=", path($i), " onclick=\"view(", $i, ", ", json_encode($arrayIm), ", ", json_encode($arrayNa), ")\"'/>";
?>

Javascript文件

function view(i, arrayIm, arrayNa) {
    //code..
}

兩件事情:

  1. 在圖像標簽的末尾有一個懸掛的撇號。

  2. 您沒有做任何HTML編碼以及 JSON編碼。

這是一個使用printf()將HTML與變量分開的示例:

printf('<img id="%s" src="%s" onclick="view(%s, %s, %s)" />',
    htmlspecialchars($i, ENT_QUOTES, 'UTF-8'),
    htmlspecialchars($i, ENT_QUOTES, 'UTF-8'),
    htmlspecialchars(json_encode($i), ENT_QUOTES, 'UTF-8'),
    htmlspecialchars(json_encode($arrayIm), ENT_QUOTES, 'UTF-8'),
    htmlspecialchars(json_encode($arrayNa), ENT_QUOTES, 'UTF-8')
);

附加的htmlspecialchars()是必需的,因為您正在屬性值內使用JavaScript代碼,並且該值必須進行這樣的編碼(即" => &quot;等)。

謝謝大家,但是盡管已使用了最后的引號,但我仍然沒有解決問題。 但是通常在javascript中使用這些數組,還是應該應用某些功能? 為什么當我在javascript中使用這些數組時,我注意到,盡管要求打印一個數組元素(例如arrayIm [0]),但我還是以[“ a”,“ b”,“ c”的形式打印了整個數組, “ d”] ..對於我的英語不好我深表歉意。

請注意, json_encode會生成引號,這會弄亂您的onclick =“”引號。 您可以使用以下方法解決問題:

echo "<img id=", $i, " src=", path($i), " onclick=\"view(", $i, ", ", str_replace('"', '\\"', json_encode($arrayIm)), ", ", str_replace('"', '\\"', json_encode($arrayNa)), ")\"'/>";

我知道這很麻煩,但是應該可以。 由您“美化”它:)

你在那里弄亂了一些語法。 您需要使用。 (點)連接字符串而不是逗號。 在結尾處您還有一個額外的單引號。

echo "<img id=".$i." src=".path($i)." onclick=\"view(".$i.", ".json_encode($arrayIm).", ".json_encode($arrayNa).");\"/>";

暫無
暫無

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

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