新瓶旧酒ASP.NET AJAX(6) - 客户端脚本编程
生活随笔
收集整理的這篇文章主要介紹了
新瓶旧酒ASP.NET AJAX(6) - 客户端脚本编程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[索引頁]
[×××]
新瓶舊酒ASP.NET AJAX(6) - 客戶端腳本編程(Sys.WebForms命名空間下的類Sys.Serialization命名空間下的類)
作者:webabcd
介紹
Sys.WebForms命名空間下的類都是與局部刷新相關的類。PageRequestManager類,其中有5個事件:initializeRequest事件、beginRequest事件、endRequest事件、pageLoading事件和pageLoaded事件。與這5個事件相關的還有5個事件參數類:InitializeRequestEventArgs類、BeginRequestEventArgs類、EndRequestEventArgs類、PageLoadingEventArgs類和PageLoadedEventArgs類。Sys.Serialization命名空間下只有一個類:Sys.Serialization.JavaScriptSerializer類。它用于在ECMAScript(JavaScript)對象與JSON格式數據之間進行轉換。
1、PageRequestManager Class
??? ·initializeRequest Event?- 異步回發的初始化時觸發
??? ·beginRequest Event?- 異步回發開始前觸發
??? ·endRequest Event?-?異步回發完成后觸發
????·pageLoading Event?-?異步回發完成后頁面加載開始前觸發
??? ·pageLoaded Event?-?異步回發完成后頁面加載完成后觸發
????·Sys.WebForms.PageRequestManager.getInstance(); - 返回頁面的PageRequestManager類的實例
??? ·Sys.WebForms.PageRequestManager.getInstance().abortPostBack(); - 終止所有異步回發
??? ·isInAsyncPostBack屬性 - 是否正在異步回發過程中
2、InitializeRequestEventArgs Class
??? ·postBackElement屬性 - 產生回發事件的元素
??? ·InitializeRequestEventArgs繼承自Sys.CancelEventArgs,所以具有cancel屬性 - 是否取消回發
3、BeginRequestEventArgs Class
??? ·postBackElement屬性 - 產生回發事件的元素
4、EndRequestEventArgs Class
??? ·error屬性 - Error對象
??? ·errorHandled屬性 - 異常是否已經被處理
??? ·response屬性 - Sys.Net.WebRequestExecutor對象
??? ·dataItems屬性 - 服務端注冊的DataItem
5、PageLoadingEventArgs Class
??? ·panelsUpdating屬性 - 準備更新的UpdatePanel數組(div元素)
??? ·dataItems屬性 - 服務端注冊的DataItem
6、PageRequestManager Class
??? ·panelsUpdated屬性 - 更新完畢的UpdatePanel數組(div元素)
??? ·dataItems屬性 - 服務端注冊的DataItem
7、Sys.Serialization.JavaScriptSerializer Class
??? ·serialize方法 -?序列化(參數:ECMAScript(JavaScript)對象;返回值:JSON字符串)
??? ·deserialize方法 - 反序列化(參數:JSON字符串;返回值ECMAScript(JavaScript)對象:)
8、其它請查看官方文檔
示例
InitializeRequest.aspx <%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="InitializeRequest.aspx.cs"
????????Inherits="ClientScripting_SysWebForms_InitializeRequest" Title="InitializeRequest" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
????????<script runat="Server">
????????????????protected void Button1_Click(object sender, EventArgs e)
????????????????{
????????????????????????System.Threading.Thread.Sleep(3000);
????????????????}
????????</script>
????????<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" DynamicLayout="false">
????????????????<ProgressTemplate>
????????????????????????Loading
????????????????</ProgressTemplate>
????????</asp:UpdateProgress>
????????<asp:UpdatePanel ID="UpdatePanel1" runat="server">
????????????????<ContentTemplate>
????????????????????????<%= DateTime.Now %>
????????????????????????<br />
????????????????????????<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
??????????????????????????
????????????????????????<asp:Button ID="Button2" runat="server" Text="cancel屬性測試" OnClick="Button1_Click" />
????????????????</ContentTemplate>
????????</asp:UpdatePanel>
????????<p>
????????????????<textarea id="TraceConsole" style="width: 500px; height: 300px;"></textarea>
????????</p>
????????<script type="text/javascript" language="javascript">
????????
????????????????Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler);
????????????????
????????????????function initializeRequestHandler(sender, e)
????????????????{
????????????????????????// postBackElement - 產生回發事件的元素
????????????????????????if (e.get_postBackElement().id == "<%= Button2.ClientID %>")
????????????????????????{
????????????????????????????????// InitializeRequestEventArgs繼承自Sys.CancelEventArgs????
????????????????????????????????// 取消回發
????????????????????????????????e.set_cancel(true);
????????????????????????}
????????????????????????else
????????????????????????{
????????????????????????????????// 獲得頁面的PageRequestManager類的實例
????????????????????????????????var prm = Sys.WebForms.PageRequestManager.getInstance();
????????????????????????
????????????????????????????????Sys.Debug.trace(e.get_postBackElement().id);
????????????????????????????????
????????????????????????????????// Sys.WebForms.PageRequestManager的isInAsyncPostBack屬性 - 是否正在異步回發過程中
????????????????????????????????Sys.Debug.trace(prm.get_isInAsyncPostBack());
????????????????????????}
????????????????}
????????</script>
</asp:Content> 運行結果
1、單擊“Button”按鈕
ctl00_ContentPlaceHolder1_Button1
false
2、在Loading的過程中再次單擊“Button”按鈕
ctl00_ContentPlaceHolder1_Button1
true
3、單擊“cancel屬性測試”按鈕
沒有反應
BeginRequestAndEndRequest.aspx
注:在ScriptManager的OnAsyncPostBackError事件中輸入代碼:ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message + "(母版頁的ScriptManager格式化錯誤信息)"; <%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="BeginRequestAndEndRequest.aspx.cs"
????????Inherits="ClientScripting_SysWebForms_BeginRequestAndEndRequest" Title="BeginRequest和EndRequest" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
????????<script runat="Server">
????????????????protected void Button1_Click(object sender, EventArgs e)
????????????????{
????????????????????????int i = Int32.Parse("abc");
????????????????}
????????????????protected void Button2_Click(object sender, EventArgs e)
????????????????{
????????????????????????ScriptManager.GetCurrent(this).RegisterDataItem(this.UpdatePanel1, "webabcd");
????????????????}
????????</script>
????????<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="Server">
????????????????<ContentTemplate>
????????????????????????<%= DateTime.Now.ToString() %>
????????????????????????<br />
????????????????????????<asp:Button ID="Button1" runat="server" Text="觸發異常" OnClick="Button1_Click" />
??????????????????????????
????????????????????????<asp:Button ID="Button2" runat="server" Text="RegisterDataItem測試" OnClick="Button2_Click" />
????????????????</ContentTemplate>
????????</asp:UpdatePanel>
????????<p>
????????????????<textarea id="TraceConsole" style="width: 500px; height: 100px;"></textarea>
????????</p>
????????<script language="javascript" type="text/javascript">
????????????????Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandler);
????????????????Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
????????????????Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler2);
????????????????function beginRequestHandler(sender, e)
????????????????{
????????????????????????// postBackElement - 產生回發事件的元素
????????????????????????alert(e.get_postBackElement().id);????????????????????????
????????????????}
????????????????????????????????
????????????????function endRequestHandler(sender, e)
????????????????{
????????????????????????// response - Sys.Net.WebRequestExecutor對象
????????????????????????Sys.Debug.trace("狀態代碼:" + e.get_response().get_statusCode());
????????
????????????????????????if (e.get_error())
????????????????????????{
????????????????????????????????// errorHandled - 異常是否已經被處理
????????????????????????????????e.set_errorHandled(true);
????????????????????????????????// error - Error對象
????????????????????????????????Sys.Debug.trace("出錯了!錯誤信息:" + e.get_error().message);
????????????????????????}
????????????????}
????????????????
????????????????function endRequestHandler2(sender, e)
????????????????{
????????????????????????var upId = "<%= this.UpdatePanel1.ClientID %>";
????????????????????????
????????????????????????// dataItems - 服務端注冊的DataItem
????????????????????????if (typeof(e.get_dataItems()[upId]) != 'undefined')
????????????????????????{
????????????????????????????????Sys.Debug.trace("注冊的數據項為:" + e.get_dataItems()[upId]);
????????????????????????}
????????????????}
????????</script>
</asp:Content> 運行結果
1、單擊“觸發異常”按鈕
彈出框,信息:ct100_ContentPlaceHolder1_Button1
狀態代碼:200
出錯了!錯誤信息:輸入字符串的格式不正確。(母版頁的ScriptManager格式化錯誤信息)
2、單擊“RegisterDataItem測試”按鈕
彈出框,信息:ct100_ContentPlaceHolder1_Button2
狀態代碼:200
注冊的數據項為:webabcd
Sample.aspx <%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Sample.aspx.cs"
????????Inherits="ClientScripting_SysSerialization_Sample" Title="Sys.Serialization Sample" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
????????<script runat="Server">
????????????????protected void Button1_Click(object sender, EventArgs e)
????????????????{
????????????????????????// 創建一個Person對象
????????????????????????Person person = new Person();
????????????????????????person.Name = "webabcd";
????????????????????????person.Age = 27;
????????????????????????// 序列化上面創建的Person對象,使其成為一個JSON字符串
????????????????????????System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
????????????????????????string s = jss.Serialize(person);
????????????????????????
????????????????????????// 注冊DataItem
????????????????????????ScriptManager.GetCurrent(this).RegisterDataItem(this.UpdatePanel1, s);
????????????????}
????????????????/// <summary>
????????????????/// Person類
????????????????/// </summary>
????????????????public class Person
????????????????{
????????????????????????private string _name;
????????????????????????/// <summary>
????????????????????????/// 姓名
????????????????????????/// </summary>
????????????????????????public string Name
????????????????????????{
????????????????????????????????get { return _name; }
????????????????????????????????set { _name = value; }
????????????????????????}
????????????????????????private int _age;
????????????????????????/// <summary>
????????????????????????/// 年齡
????????????????????????/// </summary>
????????????????????????public int Age
????????????????????????{
????????????????????????????????get { return _age; }
????????????????????????????????set { _age = value; }
????????????????????????}
????????????????}
????????</script>
????????<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="Server">
????????????????<ContentTemplate>
????????????????????????<%= DateTime.Now.ToString()%>
????????????????????????<br />
????????????????????????<asp:Button ID="Button1" runat="server" Text="Sys.Serialization" OnClick="Button1_Click" />
????????????????</ContentTemplate>
????????</asp:UpdatePanel>
????????<p>
????????????????<textarea id="TraceConsole" style="width: 500px; height: 100px;"></textarea>
????????</p>
????????<script language="javascript" type="text/javascript">
????????????????Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
????????????????
????????????????function endRequestHandler(sender, e)
????????????????{
????????????????????????var upId = "<%= this.UpdatePanel1.ClientID %>";
????????????????????????
????????????????????????// 獲得服務端注冊的DataItem,它是一個JSON字符串
????????????????????????var jsonStringServer = e.get_dataItems()[upId];
????????????????????????
????????????????????????// 反序列化這個JSON字符串,使其成為一個JSON對象
????????????????????????var jsonObject = Sys.Serialization.JavaScriptSerializer.deserialize(jsonStringServer)
????????????????????????// 序列化這個JOSN對象,使其成為一個JSON字符串
????????????????????????var jsonStringClient = Sys.Serialization.JavaScriptSerializer.serialize(jsonObject);
????????????????????????
????????????????????????Sys.Debug.trace(jsonStringClient);
????????????????????????
????????????????????????Sys.Debug.trace(jsonObject.Name + " " + jsonObject.Age);
????????????????????????
????????????????????????Sys.Debug.trace(Sys.Serialization.JavaScriptSerializer.serialize(jsonObject));
????????????????}
????????</script>
</asp:Content> 運行結果
單擊“Sys.Serialization”按鈕
{"Name":"webabcd","Age":27}
webabcd 27
{"Name":"webabcd","Age":27}
OK
[×××] ?
[×××]
新瓶舊酒ASP.NET AJAX(6) - 客戶端腳本編程(Sys.WebForms命名空間下的類Sys.Serialization命名空間下的類)
作者:webabcd
介紹
Sys.WebForms命名空間下的類都是與局部刷新相關的類。PageRequestManager類,其中有5個事件:initializeRequest事件、beginRequest事件、endRequest事件、pageLoading事件和pageLoaded事件。與這5個事件相關的還有5個事件參數類:InitializeRequestEventArgs類、BeginRequestEventArgs類、EndRequestEventArgs類、PageLoadingEventArgs類和PageLoadedEventArgs類。Sys.Serialization命名空間下只有一個類:Sys.Serialization.JavaScriptSerializer類。它用于在ECMAScript(JavaScript)對象與JSON格式數據之間進行轉換。
1、PageRequestManager Class
??? ·initializeRequest Event?- 異步回發的初始化時觸發
??? ·beginRequest Event?- 異步回發開始前觸發
??? ·endRequest Event?-?異步回發完成后觸發
????·pageLoading Event?-?異步回發完成后頁面加載開始前觸發
??? ·pageLoaded Event?-?異步回發完成后頁面加載完成后觸發
????·Sys.WebForms.PageRequestManager.getInstance(); - 返回頁面的PageRequestManager類的實例
??? ·Sys.WebForms.PageRequestManager.getInstance().abortPostBack(); - 終止所有異步回發
??? ·isInAsyncPostBack屬性 - 是否正在異步回發過程中
2、InitializeRequestEventArgs Class
??? ·postBackElement屬性 - 產生回發事件的元素
??? ·InitializeRequestEventArgs繼承自Sys.CancelEventArgs,所以具有cancel屬性 - 是否取消回發
3、BeginRequestEventArgs Class
??? ·postBackElement屬性 - 產生回發事件的元素
4、EndRequestEventArgs Class
??? ·error屬性 - Error對象
??? ·errorHandled屬性 - 異常是否已經被處理
??? ·response屬性 - Sys.Net.WebRequestExecutor對象
??? ·dataItems屬性 - 服務端注冊的DataItem
5、PageLoadingEventArgs Class
??? ·panelsUpdating屬性 - 準備更新的UpdatePanel數組(div元素)
??? ·dataItems屬性 - 服務端注冊的DataItem
6、PageRequestManager Class
??? ·panelsUpdated屬性 - 更新完畢的UpdatePanel數組(div元素)
??? ·dataItems屬性 - 服務端注冊的DataItem
7、Sys.Serialization.JavaScriptSerializer Class
??? ·serialize方法 -?序列化(參數:ECMAScript(JavaScript)對象;返回值:JSON字符串)
??? ·deserialize方法 - 反序列化(參數:JSON字符串;返回值ECMAScript(JavaScript)對象:)
8、其它請查看官方文檔
示例
InitializeRequest.aspx <%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="InitializeRequest.aspx.cs"
????????Inherits="ClientScripting_SysWebForms_InitializeRequest" Title="InitializeRequest" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
????????<script runat="Server">
????????????????protected void Button1_Click(object sender, EventArgs e)
????????????????{
????????????????????????System.Threading.Thread.Sleep(3000);
????????????????}
????????</script>
????????<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" DynamicLayout="false">
????????????????<ProgressTemplate>
????????????????????????Loading
????????????????</ProgressTemplate>
????????</asp:UpdateProgress>
????????<asp:UpdatePanel ID="UpdatePanel1" runat="server">
????????????????<ContentTemplate>
????????????????????????<%= DateTime.Now %>
????????????????????????<br />
????????????????????????<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
??????????????????????????
????????????????????????<asp:Button ID="Button2" runat="server" Text="cancel屬性測試" OnClick="Button1_Click" />
????????????????</ContentTemplate>
????????</asp:UpdatePanel>
????????<p>
????????????????<textarea id="TraceConsole" style="width: 500px; height: 300px;"></textarea>
????????</p>
????????<script type="text/javascript" language="javascript">
????????
????????????????Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler);
????????????????
????????????????function initializeRequestHandler(sender, e)
????????????????{
????????????????????????// postBackElement - 產生回發事件的元素
????????????????????????if (e.get_postBackElement().id == "<%= Button2.ClientID %>")
????????????????????????{
????????????????????????????????// InitializeRequestEventArgs繼承自Sys.CancelEventArgs????
????????????????????????????????// 取消回發
????????????????????????????????e.set_cancel(true);
????????????????????????}
????????????????????????else
????????????????????????{
????????????????????????????????// 獲得頁面的PageRequestManager類的實例
????????????????????????????????var prm = Sys.WebForms.PageRequestManager.getInstance();
????????????????????????
????????????????????????????????Sys.Debug.trace(e.get_postBackElement().id);
????????????????????????????????
????????????????????????????????// Sys.WebForms.PageRequestManager的isInAsyncPostBack屬性 - 是否正在異步回發過程中
????????????????????????????????Sys.Debug.trace(prm.get_isInAsyncPostBack());
????????????????????????}
????????????????}
????????</script>
</asp:Content> 運行結果
1、單擊“Button”按鈕
ctl00_ContentPlaceHolder1_Button1
false
2、在Loading的過程中再次單擊“Button”按鈕
ctl00_ContentPlaceHolder1_Button1
true
3、單擊“cancel屬性測試”按鈕
沒有反應
BeginRequestAndEndRequest.aspx
注:在ScriptManager的OnAsyncPostBackError事件中輸入代碼:ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message + "(母版頁的ScriptManager格式化錯誤信息)"; <%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="BeginRequestAndEndRequest.aspx.cs"
????????Inherits="ClientScripting_SysWebForms_BeginRequestAndEndRequest" Title="BeginRequest和EndRequest" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
????????<script runat="Server">
????????????????protected void Button1_Click(object sender, EventArgs e)
????????????????{
????????????????????????int i = Int32.Parse("abc");
????????????????}
????????????????protected void Button2_Click(object sender, EventArgs e)
????????????????{
????????????????????????ScriptManager.GetCurrent(this).RegisterDataItem(this.UpdatePanel1, "webabcd");
????????????????}
????????</script>
????????<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="Server">
????????????????<ContentTemplate>
????????????????????????<%= DateTime.Now.ToString() %>
????????????????????????<br />
????????????????????????<asp:Button ID="Button1" runat="server" Text="觸發異常" OnClick="Button1_Click" />
??????????????????????????
????????????????????????<asp:Button ID="Button2" runat="server" Text="RegisterDataItem測試" OnClick="Button2_Click" />
????????????????</ContentTemplate>
????????</asp:UpdatePanel>
????????<p>
????????????????<textarea id="TraceConsole" style="width: 500px; height: 100px;"></textarea>
????????</p>
????????<script language="javascript" type="text/javascript">
????????????????Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandler);
????????????????Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
????????????????Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler2);
????????????????function beginRequestHandler(sender, e)
????????????????{
????????????????????????// postBackElement - 產生回發事件的元素
????????????????????????alert(e.get_postBackElement().id);????????????????????????
????????????????}
????????????????????????????????
????????????????function endRequestHandler(sender, e)
????????????????{
????????????????????????// response - Sys.Net.WebRequestExecutor對象
????????????????????????Sys.Debug.trace("狀態代碼:" + e.get_response().get_statusCode());
????????
????????????????????????if (e.get_error())
????????????????????????{
????????????????????????????????// errorHandled - 異常是否已經被處理
????????????????????????????????e.set_errorHandled(true);
????????????????????????????????// error - Error對象
????????????????????????????????Sys.Debug.trace("出錯了!錯誤信息:" + e.get_error().message);
????????????????????????}
????????????????}
????????????????
????????????????function endRequestHandler2(sender, e)
????????????????{
????????????????????????var upId = "<%= this.UpdatePanel1.ClientID %>";
????????????????????????
????????????????????????// dataItems - 服務端注冊的DataItem
????????????????????????if (typeof(e.get_dataItems()[upId]) != 'undefined')
????????????????????????{
????????????????????????????????Sys.Debug.trace("注冊的數據項為:" + e.get_dataItems()[upId]);
????????????????????????}
????????????????}
????????</script>
</asp:Content> 運行結果
1、單擊“觸發異常”按鈕
彈出框,信息:ct100_ContentPlaceHolder1_Button1
狀態代碼:200
出錯了!錯誤信息:輸入字符串的格式不正確。(母版頁的ScriptManager格式化錯誤信息)
2、單擊“RegisterDataItem測試”按鈕
彈出框,信息:ct100_ContentPlaceHolder1_Button2
狀態代碼:200
注冊的數據項為:webabcd
Sample.aspx <%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Sample.aspx.cs"
????????Inherits="ClientScripting_SysSerialization_Sample" Title="Sys.Serialization Sample" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
????????<script runat="Server">
????????????????protected void Button1_Click(object sender, EventArgs e)
????????????????{
????????????????????????// 創建一個Person對象
????????????????????????Person person = new Person();
????????????????????????person.Name = "webabcd";
????????????????????????person.Age = 27;
????????????????????????// 序列化上面創建的Person對象,使其成為一個JSON字符串
????????????????????????System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
????????????????????????string s = jss.Serialize(person);
????????????????????????
????????????????????????// 注冊DataItem
????????????????????????ScriptManager.GetCurrent(this).RegisterDataItem(this.UpdatePanel1, s);
????????????????}
????????????????/// <summary>
????????????????/// Person類
????????????????/// </summary>
????????????????public class Person
????????????????{
????????????????????????private string _name;
????????????????????????/// <summary>
????????????????????????/// 姓名
????????????????????????/// </summary>
????????????????????????public string Name
????????????????????????{
????????????????????????????????get { return _name; }
????????????????????????????????set { _name = value; }
????????????????????????}
????????????????????????private int _age;
????????????????????????/// <summary>
????????????????????????/// 年齡
????????????????????????/// </summary>
????????????????????????public int Age
????????????????????????{
????????????????????????????????get { return _age; }
????????????????????????????????set { _age = value; }
????????????????????????}
????????????????}
????????</script>
????????<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="Server">
????????????????<ContentTemplate>
????????????????????????<%= DateTime.Now.ToString()%>
????????????????????????<br />
????????????????????????<asp:Button ID="Button1" runat="server" Text="Sys.Serialization" OnClick="Button1_Click" />
????????????????</ContentTemplate>
????????</asp:UpdatePanel>
????????<p>
????????????????<textarea id="TraceConsole" style="width: 500px; height: 100px;"></textarea>
????????</p>
????????<script language="javascript" type="text/javascript">
????????????????Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
????????????????
????????????????function endRequestHandler(sender, e)
????????????????{
????????????????????????var upId = "<%= this.UpdatePanel1.ClientID %>";
????????????????????????
????????????????????????// 獲得服務端注冊的DataItem,它是一個JSON字符串
????????????????????????var jsonStringServer = e.get_dataItems()[upId];
????????????????????????
????????????????????????// 反序列化這個JSON字符串,使其成為一個JSON對象
????????????????????????var jsonObject = Sys.Serialization.JavaScriptSerializer.deserialize(jsonStringServer)
????????????????????????// 序列化這個JOSN對象,使其成為一個JSON字符串
????????????????????????var jsonStringClient = Sys.Serialization.JavaScriptSerializer.serialize(jsonObject);
????????????????????????
????????????????????????Sys.Debug.trace(jsonStringClient);
????????????????????????
????????????????????????Sys.Debug.trace(jsonObject.Name + " " + jsonObject.Age);
????????????????????????
????????????????????????Sys.Debug.trace(Sys.Serialization.JavaScriptSerializer.serialize(jsonObject));
????????????????}
????????</script>
</asp:Content> 運行結果
單擊“Sys.Serialization”按鈕
{"Name":"webabcd","Age":27}
webabcd 27
{"Name":"webabcd","Age":27}
OK
[×××] ?
轉載于:https://blog.51cto.com/webabcd/344801
總結
以上是生活随笔為你收集整理的新瓶旧酒ASP.NET AJAX(6) - 客户端脚本编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多点子接口的帧中继配置(MP SubIn
- 下一篇: 手动排除fbiytty和vcxlcph病