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

ASP.NET 動態輸出 JavaScript 文字格式換行問題解決

     編輯:關於ASP.NET

動態輸出 JavaScript 時常用 Response.Write(""),但易忽略格式問題導致腳本錯誤。

問題分析

資料庫連線失敗時捕獲例外訊息輸出 alert,例外訊息包含換行符:

"無法打開登錄 'test' 中請求的資料庫。登錄失敗。
用戶 'sa' 登錄失敗。"

直接輸出產生的 JavaScript:

<script>alert('連接失敗!!出錯原因:無法打開登錄 'test' 中請求的資料庫。登錄失敗。
用戶 'sa' 登錄失敗。');</script>

問題:alert 字串跨行、單引號未轉義,導致「確實 ')'」腳本錯誤。JavaScript 字串不支援跨行,也不支援 C# @ 逐字字串語法。

解決方案

  1. 將例外訊息中的換行符替換為 \n 或空白
  2. 將單引號轉義為 \'
  3. 或使用 HttpUtility.JavaScriptStringEncode (.NET 4.0+) 完整編碼

程式碼範例

protected void btnConnect_Click(object sender, EventArgs e)
{
    try
    {
        // 連線資料庫代碼
    }
    catch (Exception ex)
    {
        string msg = ex.Message.Replace("\r\n", "\\n").Replace("'", "\\'");
        Response.Write(string.Format("<script>alert('{0}');</script>", msg));
    }
}

public static string Alert(string msg)
{
    return string.Format("<script>alert('{0}');</script>", 
        msg.Replace("\r\n", "\\n").Replace("'", "\\'"));
}

正確處理換行與引號轉義,即可避免動態輸出 JavaScript 的語法錯誤。

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