透過 URL 傳遞參數時,若值包含換行符(%0A),直接在 JavaScript 中賦值會導致語法錯誤(字串中斷)。解決方法是雙端進行 URL 編碼/解碼。
// PHP 產生連結
$url = "page.php?msg=" . urlencode("第一行\n第二行");
// 輸出:page.php?msg=%E7%AC%AC%E4%B8%80%E8%A1%8C%0A%E7%AC%AC%E4%BA%8C%E8%A1%8C
若在 JS 中直接:
var msg = "第一行
第二行"; // 語法錯誤:字串未閉合
| 環境 | 編碼函數 | 解碼函數 |
|---|---|---|
| PHP | urlencode() | urldecode() |
| JavaScript | encodeURI() / encodeURIComponent() | decodeURI() / decodeURIComponent() |
echo json_encode($str);(自動處理換行、引號、Unicode),或 urlencode($str)。urlencode:var str = decodeURIComponent('');json_encode:var str = ;(直接得到合法 JS 字串字面量)。<?php
$data = array('msg' => "第一行\n第二行", 'code' => 200);
echo json_encode($data); // {"msg":"第一行\n第二行","code":200}
?>
// JS 端
var data = ;
console.log(data.msg); // 正確換行
JSON 自動處理所有需轉義字符,比手動 URL 編碼更安全、可讀性更高。