ASP.NET動態輸出Javascript文字格式設定換行問題

來源:互聯網
上載者:User

前言

在動態輸出Javascript的時候我們習慣用Response.write("<script language=\"javascript\" type=\"text/javascript\">alert(1);</script>");這樣的語句來動態輸出,但是你可能沒注意到裡面的格式問題,比如,我測試連接資料庫,如果串連失敗就列印catch資訊,但是你會發現你直接輸出是輸出不了的,會報錯,比如字串沒有結束之類的指令碼錯誤。

本文

一、普通輸出問題分析、測試

1.我們先來看一段代碼:

/// <summary>
/// 串連接資料庫
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
  protected void btnConnect_Click(object sender, EventArgs e)
{
  try
  {
   ///此處填寫串連資料庫的代碼
  }
  catch (Exception ex)
  {
   Response.Write(Alert(string.Concat("串連失敗!!出錯原因:", ex.Message)));
  }
}

/// <summary>
/// 彈出資訊
/// <script language="javascript" type="text/javascript">
///  alert(msg);
/// </script>
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public static string Alert(string msg)
{
 return Javascript(string.Concat("alert('",msg,"');"));
}

/// <summary>
/// 輸出Javascript代碼
/// <script language="javascript" type="text/javascript">
///  alert("彈出框例子!");
/// </script>
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public static string Javascript(string context)
{
 return string.Concat("<script language=\"javascript\" type=\"text/javascript\">", context, "</script>"); ;
}

說明分析:這裡調用方法btnConnect_Click讓他衡失敗,比如連接字串錯誤,這裡假設連接字串為:Data Source=.\;Initial Catalog=test;User ID=sa;Password=sa 。那麼調試時ex.Message資訊會顯示"無法開啟登入 'test' 中請求的資料庫。登入失敗。\r\n使用者 'sa' 登入失敗。",那麼現在我可以很肯定的告訴你,你直接輸出肯定會報Javascript錯誤,顯示" 確實')' ",跟蹤發現它輸出的字串如下:

<script language="javascript" type="text/javascript">alert('串連失敗!!出錯原因:無法開啟登入 'test' 中請求的資料庫。登入失敗。
使用者 'sa' 登入失敗。');</script>

我們把這代碼直接複製到ASPX頁面裡,果然報錯,而且錯誤也比較明顯了,alert輸出的資訊不在一行上,也不支援C# 的'@' ,問題就出在這裡了!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.