[英]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.