版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
**ASP.NETAjax框架教程鄭健目錄1.概述 42.應(yīng)用場(chǎng)景代碼示例 4(1)ScriptManager控件示例 41)在異步調(diào)用服務(wù)端注冊(cè)客戶端腳本新方法 42)捕獲Ajax異步調(diào)用中錯(cuò)誤(默認(rèn)使用alert提示) 6感謝閱讀3)捕獲Ajax異步調(diào)用中的錯(cuò)誤(自定義輸出錯(cuò)誤方式) 10謝謝閱讀(2)UpdatePanel控件示例 134)RenderMode屬性用法示例 135)UpdateMode用法示例 166)ChildrenAsTriggers屬性用法示例 18精品文檔放心下載7) Triggers屬性用法示例 19(3)UpdateProgress控件示例 228)在異步更新時(shí)顯示滾動(dòng)進(jìn)度條 22**(4)Timer控件示例 249)在客戶端無(wú)刷新定時(shí)執(zhí)行服務(wù)端方法 24(5)Ajax中新Validators控件用法示例 26謝謝閱讀10)Validators控件的使用配置示例 26感謝閱讀(6)在客戶端請(qǐng)求服務(wù)端最基本的執(zhí)行方式 2911)使用Ajaxlibrary類庫(kù)中的客戶端WebReqest對(duì)象請(qǐng)求服務(wù)端 29感謝閱讀(7)在客戶端調(diào)用頁(yè)面后臺(tái)(Pagebehind)中的方法 33精品文檔放心下載12)在客戶端調(diào)用頁(yè)面后臺(tái)(Pagebehind)中的方法示例 33精品文檔放心下載(8)在客戶端調(diào)用WebService中的服務(wù)端方法 36感謝閱讀13)調(diào)用WebService示例 36(9)錯(cuò)誤回調(diào)處理 4014)掌握客戶端錯(cuò)誤回調(diào)處理方法 40(10)Ajaxlibrary客戶端編程特性 44精品文檔放心下載15)ASP.NETAjax框架中的客戶端對(duì)象與服務(wù)端對(duì)象交互 44精品文檔放心下載16)DataSet/DataTable/DataRow正反序列化JSON格式程序集使用 49精品文檔放心下載17)客戶端類使用Sys.StringBuilder的示例 55感謝閱讀18)WebRequestManager對(duì)象的客戶端事件示例 60謝謝閱讀**(11)在Ajax操作中訪問(wèn)Session,Cache,Application對(duì)象 62精品文檔放心下載19)在WebService方法中使用Session/Cache/Application對(duì)象 62感謝閱讀20)在Page后臺(tái)方法中使用Session/Cache/Application對(duì)象 69感謝閱讀(12)Ajax客戶端類庫(kù)對(duì)現(xiàn)有JavaScript對(duì)象的擴(kuò)展功能 75感謝閱讀21)擴(kuò)展Array對(duì)象方法forEach使用示例 75精品文檔放心下載22)對(duì)JavaScriptFunction對(duì)象擴(kuò)展,注冊(cè)事件新方式 76感謝閱讀23)Ajax對(duì)String對(duì)象擴(kuò)展方法String.format的使用 78感謝閱讀(13)在Ajaxlibrary中的客戶端面向?qū)ο?OO)功能 79感謝閱讀24)客戶端注冊(cè)命名空間,定義接口,類繼承示例 79感謝閱讀(14)AAjax中的多語(yǔ)功能 84精品文檔放心下載25)ASP.NET服務(wù)端使用全局和本地資源文件示例 84謝謝閱讀26)ASP.NET客戶端使用全局和本地資源文件示例 86謝謝閱讀**1.概述利用業(yè)余時(shí)間學(xué)習(xí)了一下微軟的ASP.NETAjax框架,我在學(xué)習(xí)時(shí)順便整理了這個(gè)教程。此教程主要針對(duì)開(kāi)發(fā)應(yīng)用場(chǎng)景和功能點(diǎn)進(jìn)行展開(kāi)示例,包括26個(gè)精簡(jiǎn)的小例子,在實(shí)際開(kāi)發(fā)中也可以作為查找手冊(cè)使用。精品文檔放心下載ASP.NETAjax更偏重于客戶端編程,因此使用它不僅使編程更加靈活,而且由于Ajax是輕量級(jí),請(qǐng)求效率也較高。精品文檔放心下載2.應(yīng)用場(chǎng)景代碼示例(1)ScriptManager控件示例在異步調(diào)用服務(wù)端注冊(cè)客戶端腳本新方法前臺(tái)頁(yè)面代碼:<body><formid="form1"runat="server">精品文檔放心下載<div><!--注釋--><!--在服務(wù)端注冊(cè)客戶端腳本新方法--><!--通過(guò)Page.ClientScript實(shí)例注冊(cè)客戶端腳本方法在異步提交時(shí)不起作用。Microsoft采用ScriptManager實(shí)例,并與Page.ClientScript方法一一對(duì)應(yīng)的方法來(lái)實(shí)現(xiàn)此功能,具體看示例后臺(tái)代碼。-->感謝閱讀**<asp:ScriptManagerID="ScriptManager1"runat="server">謝謝閱讀</asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server">精品文檔放心下載<ContentTemplate>當(dāng)前時(shí)間:<%=DateTime.Now%><asp:ButtonID="Button1"runat="server"Text="Button"精品文檔放心下載OnClick="Button1_Click1"/>精品文檔放心下載</ContentTemplate></asp:UpdatePanel></div></form></body>后臺(tái)服務(wù)端代碼:publicpartialclass_AA_ScriptManager_RegistClientScript_Default:感謝閱讀System.Web.UI.Page{**protectedvoidPage_Load(objectsender,EventArgse)感謝閱讀{}protectedvoidButton1_Click1(objectsender,EventArgse)精品文檔放心下載{//Ajax框架中新調(diào)用方式ScriptManager.RegisterStartupScript(this.UpdatePanel1,精品文檔放心下載this.GetType(),"UpdateSucceed","alert('Updatetimesucceed!')",true);感謝閱讀//默認(rèn)調(diào)用方式(在異步調(diào)用XmlHttp方式中無(wú)效)謝謝閱讀//Page.ClientScript.RegisterStartupScript(this.GetType(),"UpdateSucceed","<script>alert('Updatetimesucceed!')</script>");謝謝閱讀}}2)捕獲Ajax異步調(diào)用中錯(cuò)誤(默認(rèn)使用alert提示)感謝閱讀前臺(tái)頁(yè)面代碼:**<body><formid="form1"runat="server">感謝閱讀<div><!--注釋--><!--在ASP.NETAjax框架的異步調(diào)用中,默認(rèn)情況下不會(huì)直接拋出錯(cuò)誤詳細(xì)信息.可以借助ScriptManager的OnAsyncPostBackError事件來(lái)實(shí)現(xiàn)-->謝謝閱讀<!--AllowCustomErrorsRedirect="false"表示遇到錯(cuò)誤不跳轉(zhuǎn)到Web.Config中定義的錯(cuò)誤處理頁(yè)面感謝閱讀<system.web><customErrorsmode="On"defaultRedirect="~/DisplayError.aspx"></customErrors>精品文檔放心下載</system.web>如果設(shè)置為true,則出錯(cuò)時(shí)會(huì)自動(dòng)將頁(yè)面跳轉(zhuǎn)到當(dāng)前站點(diǎn)根目錄下面的DisplayError.aspx頁(yè)面.精品文檔放心下載--><asp:ScriptManagerID="ScriptManager1"runat="server"感謝閱讀AllowCustomErrorsRedirect="false"精品文檔放心下載**OnAsyncPostBackError="ScriptManager1_AsyncPostBackError">感謝閱讀</asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server">精品文檔放心下載<ContentTemplate><asp:ButtonID="Button1"runat="server"Text="Button"感謝閱讀OnClick="Button1_Click"/>感謝閱讀</ContentTemplate></asp:UpdatePanel></div></form></body>后臺(tái)頁(yè)面代碼:publicpartialclass_AA_ScriptManager_GetAsycError_Default:感謝閱讀System.Web.UI.Page{**protectedvoidPage_Load(objectsender,EventArgse)感謝閱讀{}protectedvoidButton1_Click(objectsender,EventArgse)謝謝閱讀{inta=5,b=0;intc=a/b;}protectedvoidScriptManager1_AsyncPostBackError(objectsender,AsyncPostBackErrorEventArgse)謝謝閱讀{ScriptManager.GetCurrent(this).AsyncPostBackErrorMessage=感謝閱讀e.Exception.Message;}}**3)捕獲Ajax異步調(diào)用中的錯(cuò)誤(自定義輸出錯(cuò)誤方式)精品文檔放心下載前臺(tái)頁(yè)面代碼:<body><formid="form1"runat="server">謝謝閱讀<div><!--注釋--><!--在AAjax框架的異步調(diào)用中,默認(rèn)情況下不會(huì)直接拋出錯(cuò)誤詳細(xì)信息.可以借助ScriptManager的OnAsyncPostBackError事件來(lái)實(shí)現(xiàn)-->精品文檔放心下載<!--AllowCustomErrorsRedirect="false"表示遇到錯(cuò)誤不跳轉(zhuǎn)到Web.Config中定義的錯(cuò)誤處理頁(yè)面謝謝閱讀<system.web><customErrorsmode="On"defaultRedirect="~/DisplayError.aspx"></customErrors>謝謝閱讀</system.web>如果設(shè)置為true,則出錯(cuò)時(shí)會(huì)自動(dòng)將頁(yè)面跳轉(zhuǎn)到當(dāng)前站點(diǎn)根目錄下面的DisplayError.aspx頁(yè)面.謝謝閱讀--><!--注意add_endRequest方法不能寫(xiě)到<head></head>中,因?yàn)檫@時(shí)精品文檔放心下載**ScriptManager實(shí)例還沒(méi)有創(chuàng)建.不好之處是方法寫(xiě)在<head></head>塊中使頁(yè)面有些亂.-->謝謝閱讀<asp:ScriptManagerID="ScriptManager1"runat="server"感謝閱讀AllowCustomErrorsRedirect="false">精品文檔放心下載</asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server">感謝閱讀<ContentTemplate><asp:ButtonID="Button1"runat="server"Text="Button"感謝閱讀OnClick="Button1_Click"/>精品文檔放心下載</ContentTemplate></asp:UpdatePanel><divid="divMessage"style="color:Red;"></div>精品文檔放心下載<scripttype="text/javascript"language="javascript">感謝閱讀Sys.WebForms.PageRequestManager.getInstance().add_endRequest(functi感謝閱讀on(sender,e)**{e.set_errorHandled(true); //表示自定義顯示錯(cuò)誤,將默認(rèn)的alert精品文檔放心下載提示禁止掉.$get("divMessage").innerHTML=e.get_error().message;謝謝閱讀});</script></div></form></body>后臺(tái)服務(wù)端代碼:publicpartialclass_AA_ScriptManager_GetAsycDetailError_CustomDisplayError_Default:謝謝閱讀System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse)謝謝閱讀**{}protectedvoidButton1_Click(objectsender,EventArgse)精品文檔放心下載{inta=5,b=0;intc=a/b;}}(2)UpdatePanel控件示例4)RenderMode屬性用法示例<body><formid="form1"runat="server">謝謝閱讀<div><!--注釋--><!--RenderMode屬性功能與Html標(biāo)簽的style.display屬性作用一樣,只是UpdatePanel只有Block和Inline兩種方式-->感謝閱讀**<asp:ScriptManagerID="ScriptManager1"runat="server">謝謝閱讀</asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server"謝謝閱讀RenderMode="Block"><ContentTemplate>UpdatePanel1(Display設(shè)置為Block)謝謝閱讀</ContentTemplate></asp:UpdatePanel><asp:UpdatePanelID="UpdatePanel2"runat="server"感謝閱讀RenderMode="Block"><ContentTemplate>UpdatePanel2(Display設(shè)置為Block)精品文檔放心下載</ContentTemplate></asp:UpdatePanel>**<asp:UpdatePanelID="UpdatePanel3"runat="server"精品文檔放心下載RenderMode="Inline"><ContentTemplate>UpdatePanel3(Display設(shè)置為Inline)精品文檔放心下載</ContentTemplate></asp:UpdatePanel><asp:UpdatePanelID="UpdatePanel4"runat="server"謝謝閱讀RenderMode=Inline><ContentTemplate>UpdatePanel4(Display設(shè)置為Inline)感謝閱讀</ContentTemplate></asp:UpdatePanel></div></form></body>**5)UpdateMode用法示例<body><formid="form1"runat="server">精品文檔放心下載<div><!--注釋--><!--UpdateMode屬性可以設(shè)置為Always和Conditional兩種方式.默認(rèn)情況下屬性值為Always.-->精品文檔放心下載<!--如果設(shè)置為Conditional,則只有當(dāng)前UpatePanel內(nèi)部的元素(比如button)提交時(shí),才能引起當(dāng)前UpdatePanel更新;-->感謝閱讀<!--如果設(shè)置為Always,則不管點(diǎn)擊UpdatePanel內(nèi)部還是外部的按鈕都會(huì)使當(dāng)前UpdatePanel更新-->感謝閱讀<asp:ScriptManagerID="ScriptManager1"runat="server">精品文檔放心下載</asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server"精品文檔放心下載UpdateMode=always><ContentTemplate>UpdatePanel1時(shí)間:<%=DateTime.Now%>感謝閱讀**<asp:ButtonID="Button1"runat="server"Text="Button"/>精品文檔放心下載</ContentTemplate></asp:UpdatePanel><asp:UpdatePanelID="UpdatePanel2"runat="server"精品文檔放心下載UpdateMode=conditional><ContentTemplate>UpdatePanel2時(shí)間:<%=DateTime.Now%>謝謝閱讀<asp:ButtonID="Button2"runat="server"Text="Button"/>謝謝閱讀</ContentTemplate></asp:UpdatePanel><br/></div></form></body>**6)ChildrenAsTriggers屬性用法示例精品文檔放心下載<body><formid="form1"runat="server">感謝閱讀<div><!--注釋--><!--ChildrenAsTriggers屬性可以設(shè)置為true或false.默認(rèn)情況下屬性值為true.-->謝謝閱讀<!--如果設(shè)置為false,則點(diǎn)擊當(dāng)前UpdatePanel中的元素不會(huì)引起當(dāng)前UpdatePanel更新;但它可能會(huì)引起本UpdatePanel之外的頁(yè)面局部更新.-->謝謝閱讀<asp:ScriptManagerID="ScriptManager1"runat="server">精品文檔放心下載</asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server">謝謝閱讀<ContentTemplate>UpdatePanel1時(shí)間:<%=DateTime.Now%>謝謝閱讀</ContentTemplate></asp:UpdatePanel>**<asp:UpdatePanelID="UpdatePanel2"runat="server"精品文檔放心下載UpdateMode=conditionalChildrenAsTriggers="false">謝謝閱讀<ContentTemplate>UpdatePanel2時(shí)間:<%=DateTime.Now%>謝謝閱讀<asp:ButtonID="Button1"runat="server"Text="Button"/>感謝閱讀</ContentTemplate></asp:UpdatePanel></div></form></body>7) Triggers屬性用法示例<body><formid="form1"runat="server">謝謝閱讀<div><!--注釋--><!--PostBackTrigger(AsyncPostBackTrigger)標(biāo)記可以指定當(dāng)前謝謝閱讀**UpdatePanel之外的元素來(lái)對(duì)自己進(jìn)行更新.不同:一個(gè)是一般頁(yè)面提交,一個(gè)是異步無(wú)刷新提交-->謝謝閱讀<!--假如設(shè)置了UpdateMode="Conditional",則只有點(diǎn)擊當(dāng)前UpdatePanel中的button才能更新本Panel中的內(nèi)容.如果想設(shè)置本UpdatePanel外的元素對(duì)本Panel內(nèi)容進(jìn)行更新,則可以設(shè)置該屬性.-->精品文檔放心下載<asp:ScriptManagerID="ScriptManager1"runat="server">謝謝閱讀</asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server"謝謝閱讀UpdateMode="Conditional"><ContentTemplate>當(dāng)前時(shí)間:<%=DateTime.Now%><asp:ButtonID="Button1"runat="server"Text="Button"/>精品文檔放心下載</ContentTemplate><Triggers><asp:PostBackTriggerControlID="Button2"/>謝謝閱讀<asp:AsyncPostBackTriggerControlID="Button3"/>精品文檔放心下載</Triggers>**</asp:UpdatePanel><asp:UpdatePanelID="UpdatePanel2"runat="server">精品文檔放心下載<ContentTemplate><asp:ButtonID="Button2"runat="server"Text="Button"/>感謝閱讀</ContentTemplate></asp:UpdatePanel><asp:UpdatePanelID="UpdatePanel3"runat="server">精品文檔放心下載<ContentTemplate><asp:ButtonID="Button3"runat="server"Text="Button"/>精品文檔放心下載</ContentTemplate></asp:UpdatePanel></div></form></body>**(3)UpdateProgress控件示例8)在異步更新時(shí)顯示滾動(dòng)進(jìn)度條<body><formid="form1"runat="server">謝謝閱讀<div><!--注釋--><!--UpdateProgress控件-->感謝閱讀<!--AssociatedUpdatePanelID表示由哪個(gè)UpdatePanel來(lái)使自己呈現(xiàn);精品文檔放心下載--><!--DynamicLayout表示UpdateProgress是否固定占有一定空間,即使是隱藏時(shí);如果該值為true,則只有顯示時(shí)才占用頁(yè)面空間.-->謝謝閱讀<!--DisplayAfter表示顯示UpdateProgress內(nèi)容之前需要等待的時(shí)間.精品文檔放心下載--><asp:ScriptManagerID="ScriptManager1"runat="server">精品文檔放心下載</asp:ScriptManager><asp:UpdateProgressID="UpdateProgress1"runat="server"感謝閱讀**DynamicLayout=falseAssociatedUpdatePanelID="UpdatePanel1"精品文檔放心下載DisplayAfter="1000"><ProgressTemplate><asp:ImageID="Image1"runat="server"ImageUr="~/(C)UpdateProgress/(8)UpdateProgress/Progress.gif"ImageUrl="~/(C)UpdateProgress/(8)UpdateProgress/Progress.gif"/>精品文檔放心下載</ProgressTemplate></asp:UpdateProgress><asp:UpdatePanelID="UpdatePanel1"runat="server">謝謝閱讀<ContentTemplate>當(dāng)前時(shí)間:<%=DateTime.Now%><asp:ButtonID="Button1"runat="server"Text="Button"感謝閱讀OnClick="Button1_Click"/>感謝閱讀</ContentTemplate></asp:UpdatePanel>**</div></form></body>(4)Timer控件示例9)在客戶端無(wú)刷新定時(shí)執(zhí)行服務(wù)端方法<body><formid="form1"runat="server">感謝閱讀<div><!--注釋--><!--Timer控件--><!--通過(guò)設(shè)置Interval值(毫秒)可以定期的更新頁(yè)面;可以配合UpdateMode來(lái)禁止某些UpdataPanle不更新.-->精品文檔放心下載<!--如果把Timer置于UpdatePanel外面,可以非異步提交整個(gè)頁(yè)面.-->謝謝閱讀<asp:ScriptManagerID="ScriptManager1"runat="server">感謝閱讀</asp:ScriptManager>**<asp:UpdatePanelID="UpdatePanel1"runat="server">感謝閱讀<ContentTemplate>當(dāng)前時(shí)間:<%=DateTime.Now%><asp:TimerID="Timer1"runat="server"Interval="1000">精品文檔放心下載</asp:Timer></ContentTemplate></asp:UpdatePanel><%--<asp:TimerID="Timer1"runat="server"Interval="1000">謝謝閱讀</asp:Timer>--%><%--<asp:UpdatePanelID="UpdatePanel2"runat="server"感謝閱讀UpdateMode=conditional><ContentTemplate>當(dāng)前時(shí)間:<%=DateTime.Now%></ContentTemplate></asp:UpdatePanel>--%></div></form>**</body>(5)Ajax中新Validators控件用法示例謝謝閱讀使用VS2005默認(rèn)的驗(yàn)證控件在異步操作時(shí)會(huì)有些問(wèn)題,微軟推出了與現(xiàn)有控件精品文檔放心下載名稱一一對(duì)應(yīng)的一系列驗(yàn)證控件。10)Validators控件的使用配置示例<body><formid="form1"runat="server">精品文檔放心下載<div><!--注釋--><!--Validators控件--><!--AAjax與VS2005自帶的系列驗(yàn)證控件在使用時(shí),會(huì)有些問(wèn)題.固Microsoft又推出一系列與原控件名稱一一對(duì)應(yīng)的控件集,在bin目錄的Validators.dll-->謝謝閱讀<!--另外,還要在Web.Config中指定使用bin下面的Validators.dll中的驗(yàn)謝謝閱讀證控件:<system.web><pages>**<tagMapping><addtagType="System.Web.UI.WebControls.CompareValidator"謝謝閱讀mappedTagType="Microsoft.Web.UI.Compatibility.CompareValidator,感謝閱讀Validators"/><addtagType="System.Web.UI.WebControls.CustomValidator"謝謝閱讀mappedTagType="Microsoft.Web.UI.Compatibility.CustomValidator,感謝閱讀Validators"/><addtagType="System.Web.UI.WebControls.RangeValidator"感謝閱讀mappedTagType="Microsoft.Web.UI.Compatibility.RangeValidator,感謝閱讀Validators"/><addtagType="System.Web.UI.WebControls.RegularExpressionValidator"精品文檔放心下載mappedTagType="Microsoft.Web.UI.Compatibility.RegularExpressionValidator謝謝閱讀,Validators"/><addtagType="System.Web.UI.WebControls.RequiredFieldValidator"精品文檔放心下載mappedTagType="Microsoft.Web.UI.Compatibility.RequiredFieldValidator,感謝閱讀**Validators"/><addtagType="System.Web.UI.WebControls.ValidationSummary"感謝閱讀mappedTagType="Microsoft.Web.UI.Compatibility.ValidationSummary,精品文檔放心下載Validators"/></tagMapping></pages></system.web>--><asp:ScriptManagerID="ScriptManager1"runat="server">精品文檔放心下載</asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server">謝謝閱讀<ContentTemplate><asp:TextBoxID="TextBox1"runat="server"></asp:TextBox>感謝閱讀<asp:RequiredFieldValidatorControlToValidate="TextBox1"ID="RequiredFieldValidator1"runat="server"ErrorMessage="不能為NULL!"></asp:RequiredFieldValidator>感謝閱讀**<br/><asp:ButtonID="Button1"runat="server"Text="Button"/>感謝閱讀</ContentTemplate></asp:UpdatePanel></div></form></body>(6)在客戶端請(qǐng)求服務(wù)端最基本的執(zhí)行方式11)使用Ajaxlibrary類庫(kù)中的客戶端WebReqest對(duì)象請(qǐng)求服務(wù)端感謝閱讀前臺(tái)頁(yè)面代碼:<body><formid="form1"runat="server">精品文檔放心下載<!--注釋--><!--使用客戶端WebRequest類,進(jìn)行一個(gè)標(biāo)準(zhǔn)的Ajax請(qǐng)求示例-->精品文檔放心下載**<asp:ScriptManagerID="ScriptManager1"runat="server">精品文檔放心下載</asp:ScriptManager><scriptlanguage="jscript"type="text/javascript">感謝閱讀functionExecuteAjaxRequest(text)感謝閱讀{varrequest=newSys.Net.WebRequest();感謝閱讀request.set_url('ClientWebRequest.ashx');謝謝閱讀request.set_httpVerb("POST");精品文檔放心下載request.add_completed(onComplete);精品文檔放心下載request.set_body('text='+encodeURIComponent(text));精品文檔放心下載request.invoke();}**functiononComplete(response)謝謝閱讀{if(response.get_responseAvailable())謝謝閱讀{vartext=response.get_object();感謝閱讀alert(text);}}</script><inputtype="button"value="HelloWord!"謝謝閱讀onclick="ExecuteAjaxRequest('HelloWord!')"/>感謝閱讀</form></body>處理程序ashx文件代碼:usingSystem;**usingSystem.Web;usingSystem.Web.Script.Serialization;精品文檔放心下載publicclassClientWebRequest:IHttpHandler{精品文檔放心下載publicvoidProcessRequest(HttpContextcontext){謝謝閱讀context.Response.ContentType="text/plain";感謝閱讀stringtext=context.Request.Params["text"];謝謝閱讀JavaScriptSerializerjsSerializer=newJavaScriptSerializer();謝謝閱讀context.Response.Write(jsSerializer.Serialize(text));謝謝閱讀}**publicboolIsReusable{get{returnfalse;}}}(7)在客戶端調(diào)用頁(yè)面后臺(tái)(Pagebehind)中的方法謝謝閱讀12)在客戶端調(diào)用頁(yè)面后臺(tái)(Pagebehind)中的方法示例感謝閱讀前臺(tái)頁(yè)面代碼:<body><formid="form1"runat="server">感謝閱讀<div>**<!--注釋--><!--在開(kāi)發(fā)中使用較多的是,在客戶端調(diào)用當(dāng)前頁(yè)面的服務(wù)端方法.-->謝謝閱讀<!--設(shè)置ScriptManager控件的EnablePageMethods屬性為:true,并且在需要使用后臺(tái)方法前加屬性標(biāo)記[WebMethod]-->精品文檔放心下載<!--服務(wù)端方法必須為靜態(tài)的,需要客戶端調(diào)用的方法才設(shè)置為靜態(tài)的-->謝謝閱讀<!--注意在服務(wù)端類中要打開(kāi)命名空間usingSystem.Web.Services,WebMethod類在此命名空間中-->精品文檔放心下載<asp:ScriptManagerID="ScriptManager1"runat="server"謝謝閱讀EnablePageMethods="true"/>感謝閱讀<inputtype="button"value="調(diào)用服務(wù)端方法"精品文檔放心下載onclick="ExecuteServerMethod('ChengKing')"/>謝謝閱讀<scriptlanguage="javascript"type="text/javascript">謝謝閱讀functionExecuteServerMethod(value)精品文檔放心下載{**PageMethods.ReturnStringServerMethod(value,CallBackResult);謝謝閱讀}functionCallBackResult(result)精品文檔放心下載{alert(result);}</script></div></form></body>頁(yè)面后臺(tái)服務(wù)端代碼:usingSystem.Web.Services;精品文檔放心下載publicpartialclass_G_Ajax_Visit_PageServer_Method_Default:謝謝閱讀System.Web.UI.Page{**protectedvoidPage_Load(objectsender,EventArgse)謝謝閱讀{}[WebMethod]publicstaticstringReturnStringServerMethod(stringstr)精品文檔放心下載{return"Hello"+str;}}(8)在客戶端調(diào)用WebService中的服務(wù)端方法精品文檔放心下載13)調(diào)用WebService示例前臺(tái)頁(yè)面代碼:<body><formid="form1"runat="server">感謝閱讀<div>**<!--注釋--><!--如果WebService類代碼在App_Code中,則直接可以通過(guò):類名.方法精品文檔放心下載調(diào)用;否則,要通過(guò):命名空間.類名.方法名稱調(diào)用.-->精品文檔放心下載<!--InlineScript=true表示在客戶端把調(diào)用服務(wù)端生成的客戶端代碼腳本輸出到頁(yè)面上;一般用于調(diào)試使用,但肯定占用時(shí)間.-->感謝閱讀<asp:ScriptManagerID="ScriptManager1"runat="server">謝謝閱讀<Services><asp:ServiceReferencePath="SimpleTransferWebservice.asmx"InlineScript=false/>謝謝閱讀</Services></asp:ScriptManager><scriptlanguage="javascript"type="text/javascript">謝謝閱讀functionshowEmployee(str)謝謝閱讀{SimpleTransferWebservice.HelloWorld(謝謝閱讀str,**onCompleted);}functiononCompleted(response)謝謝閱讀{alert(response);}</script><inputtype="button"value="HelloWord!"謝謝閱讀onclick="showEmployee(this.value)"/>感謝閱讀</div></form></body>Webservice后臺(tái)代碼(*.asmx頁(yè)面):感謝閱讀[WebService(Namespace="/")]感謝閱讀**[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]謝謝閱讀[ScriptService]publicclassSimpleTransferWebservice:System.Web.Services.WebService{感謝閱讀publicSimpleTransferWebservice(){謝謝閱讀//如果使用設(shè)計(jì)的組件,請(qǐng)取消注釋以下行//InitializeComponent();}[WebMethod][ScriptMethod]publicstringHelloWorld(stringstr){returnstr;}**}(9)錯(cuò)誤回調(diào)處理14)掌握客戶端錯(cuò)誤回調(diào)處理方法前臺(tái)頁(yè)面代碼:<body><formid="form1"runat="server">感謝閱讀<div><!--注釋--><!--使用頁(yè)面后臺(tái)服務(wù)端方法則要把屬性EnablePageMethods設(shè)置為true;-->謝謝閱讀<!--本客戶端處理錯(cuò)誤方式,以及設(shè)置屬性(set_timeout或Timeout),同樣應(yīng)用于WebService方法也是可以的-->精品文檔放心下載<asp:ScriptManagerID="ScriptManager1"runat="server"感謝閱讀EnablePageMethods=true></asp:ScriptManager>**<inputtype="button"value="一般錯(cuò)誤異常"onclick="Division(1,0)"/>謝謝閱讀<inputtype="button"value="超時(shí)異常"onclick="Timeout()"/>精品文檔放心下載<scriptlanguage="javascript"type="text/javascript">精品文檔放心下載functionDivision(a,b){PageMethods.Division(a,b,null,ErrorCallback);感謝閱讀}functionTimeout(){PageMethods.set_timeout(1000);感謝閱讀PageMethods.Timeout(null,ErrorCallback);精品文檔放心下載}**functionErrorCallback(e){varOupPutMessage=String.format("是否超時(shí):{0}\n錯(cuò)誤信息:精品文檔放心下載{1}\n異常類型:{2}\n堆棧跟蹤:{3}",e.get_timedOut(),e.get_message(),e.get_exceptionType(),e.get_stackTrace());感謝閱讀alert(OupPutMessage);}</script></div></form></body>后臺(tái)服務(wù)端代碼:usingSystem.Threading;usingSystem.Web.Services;謝謝閱讀**publicpartialclass_I_FailedCallback_Process_Default:System.Web.UI.Page精品文檔放心下載{protectedvoidPage_Load(objectsender,EventArgse)精品文檔放心下載{}[WebMethod]publicstaticintDivision(inta,intb)精品文檔放心下載{returna/b;}[WebMethod]publicstaticvoidTimeout()感謝閱讀{Thread.Sleep(2000);//超時(shí)情況感謝閱讀}}**(10)Ajaxlibrary客戶端編程特性15)ASP.NETAjax框架中的客戶端對(duì)象與服務(wù)端對(duì)象交互謝謝閱讀前臺(tái)頁(yè)面代碼:<body><formid="form1"runat="server">謝謝閱讀<div><!--注釋--><!--AAjax框架中的客戶端對(duì)象與服務(wù)端對(duì)象交互;Ajax框架還支持強(qiáng)類型集合,具體請(qǐng)看示例代碼.-->感謝閱讀<!--使用頁(yè)面后臺(tái)服務(wù)端方法則要把屬性EnablePageMethods設(shè)置為T(mén)rue;-->精品文檔放心下載<asp:ScriptManagerID="ScriptManager1"runat="server"感謝閱讀EnablePageMethods=true></asp:ScriptManager><inputtype="button"value="客戶端對(duì)象傳遞到服務(wù)端"謝謝閱讀onclick="Add1000Salary()"/>謝謝閱讀**<inputtype="button"value="服務(wù)端對(duì)象傳遞到客戶端"精品文檔放心下載onclick="GetServerObject()"/>精品文檔放心下載<scriptlanguage="javascript"type="text/javascript">感謝閱讀functionAdd1000Salary(){//如果Person不在App_Code中,則使用方式如:varperson=new命名空間.Person();精品文檔放心下載varperson=newPerson();//orvarperson=newObject();謝謝閱讀person.Name="RoseZhao";感謝閱讀person.Sex="Female";person.Salary=2000;PageMethods.Add_1000_Salary(person,謝謝閱讀Add_1000_SalarySucceeded);感謝閱讀}functionAdd_1000_SalarySucceeded(result)感謝閱讀{**varmessage=String.format("姓名:{0};性別:{1};工資:感謝閱讀{2}",result.Name,result.Sex,result.Salary);謝謝閱讀alert(message);}functionGetServerObject()精品文檔放心下載{PageMethods.GetOnePerson(GetServerObjectSucceeded);精品文檔放心下載}functionGetServerObjectSucceeded(result)精品文檔放心下載{for(varkeyinresult){varmessage=String.format(感謝閱讀"姓名:{0};性別:{1};工資:{2}",result[key].Name,result[key].Sex,result[key].Salary);謝謝閱讀alert(message);**}}</script></div></form></body>后臺(tái)服務(wù)端代碼:usingSystem.Web.Services;精品文檔放心下載usingSystem.Collections.Generic;謝謝閱讀publicpartialclass_J_Use_ClientObject_in_Ajax_Default:System.Web.UI.Page謝謝閱讀{protectedvoidPage_Load(objectsender,EventArgse)精品文檔放心下載{}**[WebMethod]publicstaticPersonAdd_1000_Salary(Personperson)感謝閱讀{person.Salary+=1000;returnperson;}[WebMethod]publicstaticIDictionary<string,Person>GetOnePerson()謝謝閱讀{Dictionary<string,Person>result=newDictionary<string,Person>();精品文檔放心下載Personperson=newPerson();感謝閱讀person.Name="RoseZhao";謝謝閱讀person.Sex="Female";person.Salary=2000;result[person.Name]=person;精品文檔放心下載returnresult;**}}16)DataSet/DataTable/DataRow正反序列化JSON格式程序集使用精品文檔放心下載前臺(tái)頁(yè)面代碼:<body><formid="form1"runat="server">精品文檔放心下載<div><!--注釋--><!--Microsoft.Web.PreviewSerializer是ASP.NETAJAXJanuaryFuturesCTP中包括的一個(gè)程序集,含有DatSet/DataTable/DataRow這些循環(huán)引用對(duì)象的序列化類,使用時(shí)只要將謝謝閱讀Microsoft.Web.Preview.dll添加到bin目錄下面,再在Web.config中謝謝閱讀這樣配置:<system.web.extensions><scripting>**<webServices><jsonSerialization><converters><addname="DataSetConverter"謝謝閱讀type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter,精品文檔放心下載Microsoft.Web.Preview"/><addname="DataRowConverter"精品文檔放心下載type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverte謝謝閱讀r,Microsoft.Web.Preview"/>精品文檔放心下載<addname="DataTableConverter"精品文檔放心下載type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConvert謝謝閱讀er,Microsoft.Web.Preview"/>謝謝閱讀</converters></jsonSerialization></webServices><scripting></system.web.extensions>-->**<!--具體用法請(qǐng)看本示例 --><asp:ScriptManagerID="ScriptManager1"runat="server"謝謝閱讀EnablePageMethods=true></asp:ScriptManager><inputtype="button"value="獲取數(shù)據(jù)"精品文檔放心下載onclick="GetPersonDataTable();"/>謝謝閱讀<scriptlanguage="javascript"type="text/javascript">謝謝閱讀functionGetPersonDataTable()精品文檔放心下載{PageMethods.GetPersonDataTable(CallBackProcessResultMethod,ErrorHa精品文檔放心下載ndler);}functionCallBackProcessResultMethod(result)謝謝閱讀{varsb=newSys.StringBuilder("<tableborder='1'感謝閱讀**bgcolor='#6699ff'>");sb.append("<tr><td>姓名</td><td>性別</td><td>工資精品文檔放心下載</td></tr>");for(vari=0;i<result.rows.length;i++)精品文檔放心下載{sb.append(String.format("<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>",result.rows[i]["Name"],result.rows[i].Sex,result.rows[i].Salary));精品文檔放心下載}sb.append("</table>");$get("table").innerHTML=sb.toString();謝謝閱讀}functionErrorHandler(error)謝謝閱讀{alert(error.get_message());謝謝閱讀}**</script><br/><divid="table"></div></div></form></body>后臺(tái)頁(yè)面代碼:usingSystem.Web.Services;謝謝閱讀usingSystem.Web.Script.Serialization;謝謝閱讀publicpartialclass_J_Ajax_Client_Programe__B_JS_StringBuilder_Class_Default:感謝閱讀System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse)感謝閱讀{}[WebMethod]**publicstaticDataTableGetPersonDataTable()謝謝閱讀{//return"abc";DataTabledt=newDataTable();感謝閱讀dt.Columns.Add(newDataColumn("Name",typeof(string)));謝謝閱讀dt.Columns.Add(newDataColumn("Sex",typeof(string)));謝謝閱讀dt.Columns.Add(newDataColumn("Salary",typeof(string)));精品文檔放心下載DataRowdrNew=dt.NewRow();精品文檔放心下載drNew["Name"]="RoseZhao";謝謝閱讀drNew["Sex"]="Female";drNew["Salary"]="2000";dt.Rows.Add(drNew);drNew=dt.NewRow();drNew["Name"]="KingZheng";感謝閱讀**drNew["Sex"]="male";drNew["Salary"]="3000";dt.Rows.Add(drNew);returndt;}}17)客戶端類使用Sys.StringBuilder的示例精品文檔放心下載前臺(tái)頁(yè)面代碼<body><formid="form1"runat="server">精品文檔放心下載<div><!--注釋--><!--.Sys.StringBuilder類在IE下可以提交客戶端程序運(yùn)行效率,與服務(wù)端的System.Text.StringBuilder功能相同,只不過(guò)分別用于客戶端和服務(wù)端-->謝謝閱讀**<asp:ScriptManagerID="ScriptManager1"runat="server"感謝閱讀EnablePageMethods=true></asp:ScriptManager><inputtype="button"value="獲取數(shù)據(jù)"謝謝閱讀onclick="GetPersonDataTable();"/>精品文檔放心下載<scriptlanguage="javascript"type="text/javascript">感謝閱讀functionGetPersonDataTable()精品文檔放心下載{PageMethods.GetPersonDataTable(CallBackProcessResultMethod,ErrorHa謝謝閱讀ndler);}functionCallBackProcessResultMethod(result)精品文檔放心下載{varsb=newSys.StringBuilder("<tableborder='1'bgcolor='#6699ff'>");感謝閱讀sb.append("<tr><td>姓名</td><td>性別</td><td>工資精品文檔放心下載**</td></tr>");for(vari=0;i<result.rows.length;i++)感謝閱讀{sb.append(String.format("<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>",result.rows[i]["Name"],result.rows[i].Sex,result.rows[i].Salary));謝謝閱讀}sb.append("</table>");$get("table").innerHTML=sb.toString();精品文檔放心下載}functionErrorHandler(error)精品文檔放心下載{alert(error.get_message());謝謝閱讀}</script><br/>**<divid="table"></div></div></form></body>后臺(tái)頁(yè)面代碼:usingSystem.Web.Services;精品文檔放心下載usingSystem.Web.Script.Serialization;精品文檔放心下載publicpartialclass_J_Ajax_Client_Programe__B_JS_StringBuilder_Class_Default:謝謝閱讀System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse)精品文檔放心下載{}[WebMethod]**publicstaticDataTableGetPersonDataTable()謝謝閱讀{//return"abc";DataTabledt=newDataTable();精品文檔放心下載dt.Columns.Add(newDataColumn("Name",typeof(string)));謝謝閱讀dt.Columns.Add(newDataColumn("Sex",typeof(string)));謝謝閱讀dt.Columns.Add(newDataColumn("Salary",typeof(string)));精品文檔放心下載DataRowdrNew=dt.NewRow();感謝閱讀drNew["Name"]="RoseZhao";謝謝閱讀drNew["Sex"]="Female";drNew["Salary"]="2000";dt.Rows.Add(drNew);drNew=dt.NewRow();drNew["Name"]="KingZheng";謝謝閱讀**drNew["Sex"]="male";drNew["Salary"]="3000";dt.Rows.Add(drNew);returndt;}}18)WebRequestManager對(duì)象的客戶端事件示例精品文檔放心下載<body><formid="form1"runat="server">感謝閱讀<div><!--注釋--><!--Ajaxlibrary中的客戶端類Sys.Net.WebRequestManager事件豐富,具體請(qǐng)看示例-->感謝閱讀<!--通過(guò)該類注冊(cè)的事件只能在XmlHttp異步更新操作時(shí),才能夠捕捉到.-->謝謝閱讀**<scriptlanguage="javascript">謝謝閱讀Sys.Net.WebRequestManager.add_invokingRequest(function(sender,精品文檔放心下載eventArgs){if(confirm("是否取消本操作?")){eventArgs.set_cancel(true);精品文檔放心下載}});Sys.Net.WebRequestManager.add_completedRequest(function()謝謝閱讀{alert("刷新時(shí)間操作成功!");});</script><asp:ScriptManagerID="ScriptManager1"runat="server"/>精品文檔放心下載**<asp:UpdatePanelID="UpdatePanel1"runat="server">感謝閱讀<ContentTemplate><asp:ButtonID="Button1"runat="server"Text="更新當(dāng)前時(shí)間精品文檔放心下載[無(wú)刷新]"/><br/><br/>當(dāng)前時(shí)間:<%=DateTime.Now.ToString()%>精品文檔放心下載</ContentTemplate></asp:UpdatePanel><asp:ButtonID="Button2"runat="server"Text="更新當(dāng)前時(shí)間[刷新]"/>精品文檔放心下載</div></form></body>(11)在Ajax操作中訪問(wèn)Session,Cache,Application對(duì)象精品文檔放心下載19)在WebService方法中使用Session/Cache/Application對(duì)象謝謝閱讀前臺(tái)頁(yè)面代碼:<body>**<formid="form1"runat="server">感謝閱讀<div><!--注釋--><!--在WebService方法中使用Session/Cache/Application對(duì)象-->謝謝閱讀<asp:ScriptManagerrunat="server"ID="ScriptManager1">感謝閱讀<Services><asp:ServiceReferencePath="UseSession_etc.asmx"謝謝閱讀InlineScript="true"/></Services></asp:ScriptManager><inputtype="button"value="改變服務(wù)端Session中存儲(chǔ)的值"精品文檔放心下載onclick="ChangeSession()"/>精品文檔放心下載<inputtype="button"value="改變服務(wù)端Cache中存儲(chǔ)的值"精品文檔放心下載onclick="ChangeCache()"/>謝謝閱讀**<inputtype="button"value="改變服務(wù)端Application中存儲(chǔ)的值"謝謝閱讀onclick="ChangeApplication()"/>謝謝閱讀<scriptlanguage="javascript"type="text/javascript">謝謝閱讀functionChangeSession(){UseSession_etc.ChangeSession(ChangeSucceeded);感謝閱讀}functionChangeCache(){UseSession_etc.ChangeCache(ChangeSucceeded);謝謝閱讀}functionChangeApplication()感謝閱讀{UseSession_etc.ChangeApplication(ChangeSucceeded);精品文檔放心下載}**functionChangeSucceeded(result)精品文檔放心下載{alert(result);}</script></div></form></body>WebService頁(yè)面后臺(tái)代碼(*.asmx):謝謝閱讀///<summary>///UseSession_etc的摘要說(shuō)明///</summary>[WebService(Namespace="/")]感謝閱讀[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]精品文檔放心下載[ScriptService]**publicclassUseSession_etc:System.Web.Services.WebService{謝謝閱讀publicUseSession_etc(){謝謝閱讀//如果使用設(shè)計(jì)的組件,請(qǐng)取消注釋以下行//InitializeComponent();}[WebMethod(EnableSession=true)]感謝閱讀publi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025建筑施工合同風(fēng)險(xiǎn)的分析和對(duì)策
- 2025合同模板舞臺(tái)設(shè)備租賃合同范文范本
- 2025人民防空工程租賃使用合同示范
- 詩(shī)歌創(chuàng)作的靈感挖掘與表達(dá)技巧
- 民族藥理學(xué)視角下的少數(shù)民族醫(yī)藥研究進(jìn)展
- 2024年留置針項(xiàng)目資金申請(qǐng)報(bào)告
- 科技賦能現(xiàn)代小區(qū)的智能安防系統(tǒng)設(shè)計(jì)與應(yīng)用研究
- 游泳教育中的法律責(zé)任與風(fēng)險(xiǎn)控制
- 3D打印行業(yè)報(bào)告:消費(fèi)電子鈦浪起3D打印黎明至
- 二零二五年度物聯(lián)網(wǎng)大數(shù)據(jù)通信接入合同3篇
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫(kù)含答案解析
- 2024年國(guó)家工作人員學(xué)法用法考試題庫(kù)及參考答案
- 國(guó)家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 同等學(xué)力英語(yǔ)申碩考試詞匯(第六版大綱)電子版
- 人教版五年級(jí)上冊(cè)遞等式計(jì)算100道及答案
- 墓地個(gè)人協(xié)議合同模板
- 2024年部編版初中語(yǔ)文各年級(jí)教師用書(shū)七年級(jí)(上冊(cè))
- 2024年新課標(biāo)全國(guó)Ⅰ卷語(yǔ)文高考真題試卷(含答案)
- 湖南省退休人員節(jié)日慰問(wèn)政策
- QB/T 5998-2024 寵物尿墊(褲)(正式版)
評(píng)論
0/150
提交評(píng)論