Ajax中使用Response.Write輸出javascript指令碼出錯的解決辦法

來源:互聯網
上載者:User
這一段時間在使用Ajax將老ASP.NET程式升級為Ajax程式,在升級中發現先前頁面中使用Response.Write("<script>alert('資料添加成功!')</script>")的代碼執行時出錯.上網上尋找解決辦法,網上大部分的解決語句是改為 ScriptManager.RegisterStartupScript(updatePanel1, typeof(UpdatePanel), "aaa", "<script>alert('資料添加成功!')</script>",true);包括陳黎夫著的<<ASP.NET AJAX>>中P104頁中解決方案.
     因為我們現在使用Visual Studio 2008 Beta2中的Ajax(3.5),我在使用上述的語句進行處理時,系統並沒有預期的指令碼運行來跳出對話方塊,不知是不是Ajax 3.5是不是有改動.後來經過嘗試將ScriptManager.RegisterStartupScript(updatePanel1, typeof(UpdatePanel), "aaa", "<script>alert('資料添加成功!')</script>",true);中最後的true變為ScriptManager.RegisterStartupScript(updatePanel1, typeof(UpdatePanel), "aaa", "<script>alert('資料添加成功!')</script>",false);就可以了.下面寫一個通用的訊息提示類.

public class MessageBox
{
    
    private HttpContext myContext = null;
    public MessageBox(HttpContext CurrentContext)
    {
        myContext = CurrentContext;
    }
    /// <summary>
    /// 自訂快顯視窗內容
    /// </summary>
    /// <param name="msg"></param>
    public void Show(string msg)
    {
        //myContext.Response.Write("<script>alert('" + msg + "');</script>");
        ScriptManager.RegisterStartupScript((System.Web.UI.Page)myContext.CurrentHandler, typeof(System.Web.UI.Page), "aaa", "<script>alert('" + msg + "');</script>", false);
    }
    /// <summary>
    /// 自訂快顯視窗內容並轉向一個新的頁面
    /// </summary>
    /// <param name="msg">自訂訊息</param>
    /// <param name="Url">需要轉到的新頁面</param>
    public void Show(string msg,string Url)
    {
        //myContext.Response.Write("<script>alert('" + msg + "');javascript:location='"+Url+"';</script>");
        ScriptManager.RegisterStartupScript((System.Web.UI.Page)myContext.CurrentHandler, typeof(System.Web.UI.Page), "aaa", "<script>alert('" + msg + "');javascript:location='" + Url + "';</script>", false);

    }
    /// <summary>
    /// 自訂快顯視窗內容,自訂是否關閉當前頁面
    /// </summary>
    /// <param name="msg"></param>
    /// <param name="close"></param>
    public void Show(string msg, bool close)
    {
        if (close)
        {
           // myContext.Response.Write("<script>alert('" + msg + "');javascript:window.close();</script>");
            ScriptManager.RegisterStartupScript((System.Web.UI.Page)myContext.CurrentHandler, typeof(System.Web.UI.Page), "aaa", "<script>alert('" + msg + "');javascript:window.close();</script>", false);
        }
        else
        {
            //myContext.Response.Write("<script>alert('" + msg + "');</script>");
            ScriptManager.RegisterStartupScript((System.Web.UI.Page)myContext.CurrentHandler, typeof(System.Web.UI.Page), "aaa", "<script>alert('" + msg + "');javascript:window.close();</script>", false);
        }
    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.