簡體   English   中英

通過 HTML 將復雜變量傳遞給 javascript 的正確方法

[英]Proper way to pass complex variables to javascript through HTML

我試圖擺脫使用 PHP 的 htmlentities,這就是我停止的地方:

<?php
echo '<img ... onclick="MP.view(\''.$i->name.'\') />';
?>

但后來我想,我不會替換和檢查特殊字符,而只是 JSON 整個 object。

<?php
echo '<img ... onclick="MP.view('.json_encode($i).') />';
?>

這提供了一個非常不受歡迎的結果,放入了大量的雙引號。 那么我該怎么做呢? 我是否應該為每個圖像分配一個數字唯一 id 並傳遞 id,然后從 JS 數組中查找數據的 rest?

在這種情況下,正確的方法是:

 htmlspecialchars(json_encode($var), ENT_QUOTES, "UTF-8")

htmlspecialchars將任何雙引號轉換為正確的 HTML 轉義,使生成的字符串適用於大多數屬性。 ENT_QUOTES參數也處理單引號; 但您的示例中可能不需要它。

傳遞這樣的數據需要更少的 escaping (和更少的字節):

echo '<script>var myObj = '.json_encode($i).'</script>';

然后,您的代碼可能看起來更像這樣:

echo '<img ... onclick="MP.view(myObj)" />';

暫無
暫無

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

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