伺服端 PHP 產生的資料需傳給前端 JS 使用,常見於內聯腳本渲染。本文整理三種實用模式。
<?php
echo "<script>test('{$_POST['userid']}');</script> ";
// 同理適用 $_SESSION['key']
?>
<?php
$para = "hello boby!";
echo $para; // 也可直接輸出 HTML 內容
echo "<script> var para = \"{$para}\"; alert(para); </script>";
?>
<?php
$data = array('id' => 123, 'name' => 'Tom', 'tags' => array('php', 'js'));
?>
<script>
var appData = ;
console.log(appData.name); // Tom
</script>
| 方法 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| 內聯呼叫 | 簡單直接 | 難以維護、易產生 XSS、字串跳脫麻煩 | 極簡單標量傳遞 |
| JS 變數賦值 | 直觀 | 同上,複雜結構需手動拼接 | 單一變數、字串/數值 |
| JSON 編碼 | 結構完整、自動跳脫、前端直接用物件 | 需注意 json_encode 選項(如 JSON_HEX_TAG 防 XSS) | 陣列、物件、多欄位資料 |
json_encode 加入 JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP 防止腳本注入。unsafe-inline,改用外部 JS 檔案並透過 data-* 屬性或 API 取資料。