首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

URL 參數含換行符導致 JavaScript 賦值失敗的解決方案

     編輯:PHP 相關知識

透過 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 = "第一行
第二行"; // 語法錯誤:字串未閉合

解決方案:雙端編碼

環境編碼函數解碼函數
PHPurlencode()urldecode()
JavaScriptencodeURI() / encodeURIComponent()decodeURI() / decodeURIComponent()

最佳實踐流程

  1. 後端輸出時:echo json_encode($str);(自動處理換行、引號、Unicode),或 urlencode($str)。
  2. 前端接收時:
    若用 urlencode:var str = decodeURIComponent('');
    若用 json_encode:var str = ;(直接得到合法 JS 字串字面量)。

推薦:統一使用 JSON 格式傳遞

<?php
$data = array('msg' => "第一行\n第二行", 'code' => 200);
echo json_encode($data); // {"msg":"第一行\n第二行","code":200}
?>
// JS 端
var data = ;
console.log(data.msg); // 正確換行

JSON 自動處理所有需轉義字符,比手動 URL 編碼更安全、可讀性更高。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved