使用ASP.Net 3.5 的Ajax与Web服务开发实例
生活随笔
收集整理的這篇文章主要介紹了
使用ASP.Net 3.5 的Ajax与Web服务开发实例
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文繼續(xù)介紹使用ASP.NET3.5中的AJAX環(huán)境中如何從客戶端JavaScript調(diào)用Web服務(wù)方法。編寫(xiě)本文的目的在于讓大家深刻了解基于ASP.Net3.5的Ajax和Web的服務(wù),雖然例子比較簡(jiǎn)單,但是比較能說(shuō)明問(wèn)題。在這里我又介紹了命名空間System. Web.Script的方式確定客戶端調(diào)用Web服務(wù)方法。 在AJAX中調(diào)用Web服務(wù)方法可以提高Web用戶的體驗(yàn),微軟在ASP.NET3.5中的AJAX加入了它的新功能,新的功能可以從客戶端JavaScript調(diào)用Web服務(wù)方法無(wú)刷新整個(gè)頁(yè)面。AJAX技術(shù)使你能夠調(diào)用服務(wù)器端的方法,沒(méi)有post back。客戶端腳本可以提出請(qǐng)求的Web方法,并可以通過(guò)數(shù)據(jù)作為輸入?yún)?shù)的方法和數(shù)據(jù)也可以從服務(wù)器發(fā)回給客戶端瀏覽器。
? 為了使你的應(yīng)用程序調(diào)用的ASP.NET Web service使用客戶端腳本,服務(wù)器異步通信層會(huì)自動(dòng)生成的JavaScript代理類。代理類生成為每個(gè)Web服務(wù)的 一個(gè)<asp:ServiceReference>元素被列入<asp:ScriptManager>控制的頁(yè)面。
<asp:ScriptManager?runat="server"?ID="scriptManagerId">
?????<Services>
????????????<asp:ServiceReference??Path="WebService.asmx"?/>
?????</Services>
</asp:ScriptManager>
這是下載的代理類的瀏覽器在網(wǎng)頁(yè)加載時(shí)間,并提供了一個(gè)客戶端對(duì)象,代理調(diào)用方法的Web服務(wù)。在調(diào)用相應(yīng)的方法所產(chǎn)生的JavaScript的代理類。該代理類打開(kāi)通信與網(wǎng)絡(luò)服務(wù)。這些請(qǐng)求通過(guò)的XMLHTTP對(duì)象的瀏覽器異步通訊。? 如下圖所示,詳細(xì)規(guī)定了不同的層上的客戶機(jī)和服務(wù)器方面通訊框架。 <asp:ScriptReference>元素指定注冊(cè)一個(gè)JavaScript文件,用來(lái)在網(wǎng)頁(yè)中。只有在注冊(cè)CallWebServiceMethod.js文件,您才可以在方法上進(jìn)行調(diào)用,調(diào)用Web服務(wù)方法的腳本是異步的。獲得返回值或以確定何時(shí)返回的請(qǐng)求,您必須提供一個(gè)成功的回調(diào)函數(shù)。回調(diào)函數(shù)被調(diào)用時(shí),請(qǐng)求已成功完成,并且它包含的返回值(如果有的話)從Web方法調(diào)用。您也可以提供一個(gè)失敗的回調(diào)函數(shù)來(lái)處理錯(cuò)誤。此外,您還可以通過(guò)用戶的背景資料,使用中的回調(diào)函數(shù)。 如下圖,是WCF和Ajax調(diào)用Web service時(shí)序圖。
???? 在上一篇文章(基于ASP.NET 3.5 Web Service 的JSON擴(kuò)展應(yīng)用)中已經(jīng)講過(guò),JSON - JavaScript對(duì)象符號(hào)是默認(rèn)序列化格式,使用它進(jìn)行數(shù)據(jù)轉(zhuǎn)換之間客戶端服務(wù)器請(qǐng)求。您可以禁用所有目前啟用的協(xié)議像HTTP-GET、HTTP-POST,甚至的XML格式的SOAP中使用的早期形式的Web服務(wù)。以下設(shè)置在Web.config文件同樣也是這樣使用。 <system.web>
????<webServices>
????????<protocols>
??????????<clear/>
????????</protocols>
??????</webServices>
</system.web>
? 請(qǐng)求一個(gè)Web服務(wù)方法通過(guò)這些層面。你可以看到如何使用一種方法,要求在一個(gè)可用的代理對(duì)象和Web請(qǐng)求中,并由一個(gè)XMLHttp對(duì)象在客戶端瀏覽器端運(yùn)行。在服務(wù)器端,你的要求是與往常一樣是由一個(gè)HTTP處理程序,發(fā)出的XML/JSON序列化。 如下圖所示,asp.net 3.5調(diào)用Ajax與Web服務(wù)的類關(guān)系圖。
在AJAX中使用Web服務(wù)方法包括兩個(gè)步驟:第一步是,創(chuàng)建和定義Web服務(wù)。第二個(gè)步,是使用客戶端腳本來(lái)從一個(gè)網(wǎng)頁(yè)的服務(wù)通話方法。創(chuàng)建一個(gè)Web服務(wù): 在System.Web.Scripts.Services命名空間,你可能會(huì)發(fā)現(xiàn)一個(gè)屬性類“ScriptSrvice ”,這需要適用于Web服務(wù)類,使Web服務(wù)方法可以調(diào)用來(lái)自客戶端的腳本。這將使代理生成腳本來(lái)生成一個(gè)代理對(duì)象對(duì)應(yīng)于Web服務(wù)類。 同樣,在相同的命名空間,可能會(huì)發(fā)現(xiàn)另一個(gè)屬性類“ScriptMethod”,如果采用此屬性為Web方法,你可以指定哪些HTTP動(dòng)詞是用來(lái)調(diào)用一個(gè)方法和響應(yīng)形式。此屬性有三個(gè)參數(shù)描述如下: UseHttpGet :如果設(shè)置為true,將調(diào)用該方法使用HTTP GET命令。默認(rèn)值為false 。
????? ResponseFormat :指定是否反應(yīng)將序列化的簡(jiǎn)JSON或XML 。默認(rèn)值為JSON。
????? XmlSerializeString :指定是否所有返回類型,包括字符串類型,是為XML序列化的值將被忽略XmlSerializeString連續(xù)的響應(yīng)來(lái)系列化的JSON 。
? 現(xiàn)在,創(chuàng)建新的Web使用ASP.NET Web Service模板在Microsoft Visual Studio 2008和修改Web服務(wù)類如下: using?System.Web.Script.Services;
namespace?AjaxWebService
{
????[WebService(Namespace?=?"http://localhost:1382/AjaxWebService/")]
????[WebServiceBinding(ConformsTo?=?WsiProfiles.BasicProfile1_1)]
????[ScriptService]
????public?class?Service?:?System.Web.Services.WebService
????{
????????string?myXmlData?=?@"<?xml?version=""1.0""?encoding=""utf-8""??>
????????????????<Book>
????????????????????<Title>Programming?ASP.NET?3.5,?AJAX?and?Web?Services</Title>
????????????????</Book>";
???????
????????///?<summary>
????????///?This?method?uses?JSON?response?formatting?
????????///?</summary>
????????///?<param?name="months"></param>
????????///?<returns></returns>
????????[ScriptMethod(ResponseFormat?=?ResponseFormat.Json)]
????????[WebMethod]
????????public?string?getNextBackupDate(int?months)
????????{
????????????return?DateTime.Now.AddMonths(months).ToShortDateString();
????????}
????????
????????///?<summary>
????????///?This?method?uses?XML?response?formatting
????????///?</summary>
????????///?<returns></returns>
????????[ScriptMethod(ResponseFormat?=?ResponseFormat.Xml)]
????????[WebMethod]
????????public?XmlDocument?GetBookTitle()
????????{
????????????XmlDocument?xmlDoc?=?new?XmlDocument();
????????????xmlDoc.LoadXml(myXmlData);
????????????return?xmlDoc;
????????}
???????
????????///?<summary>
????????///?This?method?uses?HTTP-GET?protocol?to?call?it
????????///?</summary>
????????///?<returns></returns>
????????[ScriptMethod(UseHttpGet?=?true)]
????????[WebMethod]
????????public?string?HelloWorld()
????????{
????????????return?"Hello,?world";
????????}
????}
}
? 注:Web服務(wù)創(chuàng)建的ScriptService使用如上將不會(huì)被瀏覽器默認(rèn)。您需要修改文件中的設(shè)置Web.config文件如下,以測(cè)試上述Web服務(wù)。 <webServices>
?????<protocols>
???????<add?name="HttpGet"/>?
???????<add?name="HttpPost"/>
????</protocols>
</webServices>
? 調(diào)用Web服務(wù)方法使用客戶端腳本,Asp.Net Web服務(wù)方法可以說(shuō)是從客戶端腳本異步不回傳,并沒(méi)有刷新整個(gè)頁(yè)面。只有其之間傳輸數(shù)據(jù)的服務(wù)器和客戶端的瀏覽器。
目前,.NET 3.5框架支持Web服務(wù)和客戶端的網(wǎng)頁(yè)可以在相同的域(同一網(wǎng)站)。
現(xiàn)在增加一個(gè)新的“Ajax激活Web頁(yè)” ,以現(xiàn)有的Web服務(wù)項(xiàng)目并添加控件的網(wǎng)頁(yè)中指定的標(biāo)記如下,編寫(xiě)JavaScript函數(shù)調(diào)用Web服務(wù)和回調(diào)方法。調(diào)用Web服務(wù)方法 是通過(guò)使用代理類和參數(shù)列表,成功回調(diào)函數(shù)名,失敗的回調(diào)函數(shù),用戶方面是通過(guò)額外的參數(shù)的要求調(diào)用。 <%@?Page??Language="C#"?AutoEventWireup="true"?CodeFile="Default.aspx.cs"?Inherits="AjaxWebService.Default"?%>
<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html?xmlns="http://www.w3.org/1999/xhtml">
<head?runat="server">
????<title>AJAX?Web?Form</title>
????<script?type="text/javascript">
function?CallNextDate()?
????{
????????AjaxWebService.Service.getNextBackupDate(1,?OnSucceeded);
????}
????function?CallHelloWorld()?
????{
????????AjaxWebService.Service.HelloWorld(OnSucceeded);
????}
???function?CallBookTitle()?
????{
????????AjaxWebService.Service.GetBookTitle(OnSuccess,?OnFail,?"XmlDocument");
????}
????
????//?This?is?the?callback?function?that?processes?the?Web?Service?return?value?in?JSON?format.
????function?OnSucceeded(result)
????{
????????var?myresult?=?document.getElementById("Text1");
????????myresult.value?=?result;
????}
????
???//?This?is?the?callback?function?that?processes?the?Web?Service?return?value?in?XML?format.
????function?OnSuccess(result)
????{
????????var?myresult?=?document.getElementById("Text1");
????????myresult.value?=?"Title:?"?+?result.documentElement.text;
????}
????
???//?This?is?the?callback?function?that?processes?the?Web?Service?return?value?in?XML?format.
????function?OnFail(error)
????{
????????var?myresult?=?document.getElementById("Text1");
????????myresult.value?=?"Service?Error:?"?+?error.get_message();
????} ?????</script>
??
????<style?type="text/css">
????????#Text1
????????{
????????????width:?375px;
????????}
????????#Button2
????????{
????????????width:?140px;
????????}
????</style>
??
</head>
<body>
????<form?id="form1"?runat="server">
????<div>
????????<asp:ScriptManager?ID="ScriptManager1"?runat="server">
????????<Services>
????????<asp:ServiceReference?Path="~/Service.asmx"/>
????????</Services>
????????</asp:ScriptManager>
????????<br?/>
????????Result: ?????????<input?id="Text1"?type="text"?/><br?/>
????????<br?/>
????????<input?id="Button1"?type="button"?value="Get?Server?Time"?onclick="CallNextDate()"?/>
????????<input?id="Button2"?type="button"?value="Say?Hello?World"?onclick="CallHelloWorld()"?/>
????????<input?id="Button3"?type="button"?value="Get?Book?Title"?onclick="CallBookTitle()"?/>
????????<br?/>
????????<br?/>
????????<br?/>
????????</div>
????</form>
</body>
</html>
? 在上面的標(biāo)記,通知的路徑屬性如何在ServiceReference元素ScriptManager控制點(diǎn)到Web服務(wù)類。這使得Web服務(wù)方法被稱為從腳本中的default.aspx頁(yè)面。內(nèi)嵌功能CallNextDate , CallHelloWorld , CallBookTitle是用來(lái)調(diào)用的三個(gè)Web服務(wù)方法。 OnSuccess和OnFail方法是回調(diào)方法,得到執(zhí)行的Web服務(wù)的方法得到了執(zhí)行。為了使客戶端的Web頁(yè)的正常工作,您需要添加以下設(shè)置的Web.config文件。 <runtime>
????<assemblyBinding?xmlns="urn:schemas-microsoft-com:asm.v1">
??????<dependentAssembly>
????????<assemblyIdentity?name="System.Web.Extensions"?publicKeyToken="31bf3856ad364e35"/>
????????<bindingRedirect?oldVersion="1.0.0.0-1.1.0.0"?newVersion="3.5.0.0"/>
??????</dependentAssembly>
??????<dependentAssembly>
????????<assemblyIdentity?name="System.Web.Extensions.Design"?publicKeyToken="31bf3856ad364e35"/>
????????<bindingRedirect?oldVersion="1.0.0.0-1.1.0.0"?newVersion="3.5.0.0"/>
??????</dependentAssembly>
????</assemblyBinding>
??</runtime>
本文使用微軟ASP.NET 3.5引用的System.Web.Extensions.dll等DLL,利用內(nèi)置的ASP.NET3.5中的AJAX技術(shù)僅供學(xué)習(xí)人員參考。 參考代碼下載
? 為了使你的應(yīng)用程序調(diào)用的ASP.NET Web service使用客戶端腳本,服務(wù)器異步通信層會(huì)自動(dòng)生成的JavaScript代理類。代理類生成為每個(gè)Web服務(wù)的 一個(gè)<asp:ServiceReference>元素被列入<asp:ScriptManager>控制的頁(yè)面。
<asp:ScriptManager?runat="server"?ID="scriptManagerId">
?????<Services>
????????????<asp:ServiceReference??Path="WebService.asmx"?/>
?????</Services>
</asp:ScriptManager>
這是下載的代理類的瀏覽器在網(wǎng)頁(yè)加載時(shí)間,并提供了一個(gè)客戶端對(duì)象,代理調(diào)用方法的Web服務(wù)。在調(diào)用相應(yīng)的方法所產(chǎn)生的JavaScript的代理類。該代理類打開(kāi)通信與網(wǎng)絡(luò)服務(wù)。這些請(qǐng)求通過(guò)的XMLHTTP對(duì)象的瀏覽器異步通訊。? 如下圖所示,詳細(xì)規(guī)定了不同的層上的客戶機(jī)和服務(wù)器方面通訊框架。 <asp:ScriptReference>元素指定注冊(cè)一個(gè)JavaScript文件,用來(lái)在網(wǎng)頁(yè)中。只有在注冊(cè)CallWebServiceMethod.js文件,您才可以在方法上進(jìn)行調(diào)用,調(diào)用Web服務(wù)方法的腳本是異步的。獲得返回值或以確定何時(shí)返回的請(qǐng)求,您必須提供一個(gè)成功的回調(diào)函數(shù)。回調(diào)函數(shù)被調(diào)用時(shí),請(qǐng)求已成功完成,并且它包含的返回值(如果有的話)從Web方法調(diào)用。您也可以提供一個(gè)失敗的回調(diào)函數(shù)來(lái)處理錯(cuò)誤。此外,您還可以通過(guò)用戶的背景資料,使用中的回調(diào)函數(shù)。 如下圖,是WCF和Ajax調(diào)用Web service時(shí)序圖。
???? 在上一篇文章(基于ASP.NET 3.5 Web Service 的JSON擴(kuò)展應(yīng)用)中已經(jīng)講過(guò),JSON - JavaScript對(duì)象符號(hào)是默認(rèn)序列化格式,使用它進(jìn)行數(shù)據(jù)轉(zhuǎn)換之間客戶端服務(wù)器請(qǐng)求。您可以禁用所有目前啟用的協(xié)議像HTTP-GET、HTTP-POST,甚至的XML格式的SOAP中使用的早期形式的Web服務(wù)。以下設(shè)置在Web.config文件同樣也是這樣使用。 <system.web>
????<webServices>
????????<protocols>
??????????<clear/>
????????</protocols>
??????</webServices>
</system.web>
? 請(qǐng)求一個(gè)Web服務(wù)方法通過(guò)這些層面。你可以看到如何使用一種方法,要求在一個(gè)可用的代理對(duì)象和Web請(qǐng)求中,并由一個(gè)XMLHttp對(duì)象在客戶端瀏覽器端運(yùn)行。在服務(wù)器端,你的要求是與往常一樣是由一個(gè)HTTP處理程序,發(fā)出的XML/JSON序列化。 如下圖所示,asp.net 3.5調(diào)用Ajax與Web服務(wù)的類關(guān)系圖。
在AJAX中使用Web服務(wù)方法包括兩個(gè)步驟:第一步是,創(chuàng)建和定義Web服務(wù)。第二個(gè)步,是使用客戶端腳本來(lái)從一個(gè)網(wǎng)頁(yè)的服務(wù)通話方法。創(chuàng)建一個(gè)Web服務(wù): 在System.Web.Scripts.Services命名空間,你可能會(huì)發(fā)現(xiàn)一個(gè)屬性類“ScriptSrvice ”,這需要適用于Web服務(wù)類,使Web服務(wù)方法可以調(diào)用來(lái)自客戶端的腳本。這將使代理生成腳本來(lái)生成一個(gè)代理對(duì)象對(duì)應(yīng)于Web服務(wù)類。 同樣,在相同的命名空間,可能會(huì)發(fā)現(xiàn)另一個(gè)屬性類“ScriptMethod”,如果采用此屬性為Web方法,你可以指定哪些HTTP動(dòng)詞是用來(lái)調(diào)用一個(gè)方法和響應(yīng)形式。此屬性有三個(gè)參數(shù)描述如下: UseHttpGet :如果設(shè)置為true,將調(diào)用該方法使用HTTP GET命令。默認(rèn)值為false 。
????? ResponseFormat :指定是否反應(yīng)將序列化的簡(jiǎn)JSON或XML 。默認(rèn)值為JSON。
????? XmlSerializeString :指定是否所有返回類型,包括字符串類型,是為XML序列化的值將被忽略XmlSerializeString連續(xù)的響應(yīng)來(lái)系列化的JSON 。
? 現(xiàn)在,創(chuàng)建新的Web使用ASP.NET Web Service模板在Microsoft Visual Studio 2008和修改Web服務(wù)類如下: using?System.Web.Script.Services;
namespace?AjaxWebService
{
????[WebService(Namespace?=?"http://localhost:1382/AjaxWebService/")]
????[WebServiceBinding(ConformsTo?=?WsiProfiles.BasicProfile1_1)]
????[ScriptService]
????public?class?Service?:?System.Web.Services.WebService
????{
????????string?myXmlData?=?@"<?xml?version=""1.0""?encoding=""utf-8""??>
????????????????<Book>
????????????????????<Title>Programming?ASP.NET?3.5,?AJAX?and?Web?Services</Title>
????????????????</Book>";
???????
????????///?<summary>
????????///?This?method?uses?JSON?response?formatting?
????????///?</summary>
????????///?<param?name="months"></param>
????????///?<returns></returns>
????????[ScriptMethod(ResponseFormat?=?ResponseFormat.Json)]
????????[WebMethod]
????????public?string?getNextBackupDate(int?months)
????????{
????????????return?DateTime.Now.AddMonths(months).ToShortDateString();
????????}
????????
????????///?<summary>
????????///?This?method?uses?XML?response?formatting
????????///?</summary>
????????///?<returns></returns>
????????[ScriptMethod(ResponseFormat?=?ResponseFormat.Xml)]
????????[WebMethod]
????????public?XmlDocument?GetBookTitle()
????????{
????????????XmlDocument?xmlDoc?=?new?XmlDocument();
????????????xmlDoc.LoadXml(myXmlData);
????????????return?xmlDoc;
????????}
???????
????????///?<summary>
????????///?This?method?uses?HTTP-GET?protocol?to?call?it
????????///?</summary>
????????///?<returns></returns>
????????[ScriptMethod(UseHttpGet?=?true)]
????????[WebMethod]
????????public?string?HelloWorld()
????????{
????????????return?"Hello,?world";
????????}
????}
}
? 注:Web服務(wù)創(chuàng)建的ScriptService使用如上將不會(huì)被瀏覽器默認(rèn)。您需要修改文件中的設(shè)置Web.config文件如下,以測(cè)試上述Web服務(wù)。 <webServices>
?????<protocols>
???????<add?name="HttpGet"/>?
???????<add?name="HttpPost"/>
????</protocols>
</webServices>
? 調(diào)用Web服務(wù)方法使用客戶端腳本,Asp.Net Web服務(wù)方法可以說(shuō)是從客戶端腳本異步不回傳,并沒(méi)有刷新整個(gè)頁(yè)面。只有其之間傳輸數(shù)據(jù)的服務(wù)器和客戶端的瀏覽器。
目前,.NET 3.5框架支持Web服務(wù)和客戶端的網(wǎng)頁(yè)可以在相同的域(同一網(wǎng)站)。
現(xiàn)在增加一個(gè)新的“Ajax激活Web頁(yè)” ,以現(xiàn)有的Web服務(wù)項(xiàng)目并添加控件的網(wǎng)頁(yè)中指定的標(biāo)記如下,編寫(xiě)JavaScript函數(shù)調(diào)用Web服務(wù)和回調(diào)方法。調(diào)用Web服務(wù)方法 是通過(guò)使用代理類和參數(shù)列表,成功回調(diào)函數(shù)名,失敗的回調(diào)函數(shù),用戶方面是通過(guò)額外的參數(shù)的要求調(diào)用。 <%@?Page??Language="C#"?AutoEventWireup="true"?CodeFile="Default.aspx.cs"?Inherits="AjaxWebService.Default"?%>
<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html?xmlns="http://www.w3.org/1999/xhtml">
<head?runat="server">
????<title>AJAX?Web?Form</title>
????<script?type="text/javascript">
function?CallNextDate()?
????{
????????AjaxWebService.Service.getNextBackupDate(1,?OnSucceeded);
????}
????function?CallHelloWorld()?
????{
????????AjaxWebService.Service.HelloWorld(OnSucceeded);
????}
???function?CallBookTitle()?
????{
????????AjaxWebService.Service.GetBookTitle(OnSuccess,?OnFail,?"XmlDocument");
????}
????
????//?This?is?the?callback?function?that?processes?the?Web?Service?return?value?in?JSON?format.
????function?OnSucceeded(result)
????{
????????var?myresult?=?document.getElementById("Text1");
????????myresult.value?=?result;
????}
????
???//?This?is?the?callback?function?that?processes?the?Web?Service?return?value?in?XML?format.
????function?OnSuccess(result)
????{
????????var?myresult?=?document.getElementById("Text1");
????????myresult.value?=?"Title:?"?+?result.documentElement.text;
????}
????
???//?This?is?the?callback?function?that?processes?the?Web?Service?return?value?in?XML?format.
????function?OnFail(error)
????{
????????var?myresult?=?document.getElementById("Text1");
????????myresult.value?=?"Service?Error:?"?+?error.get_message();
????} ?????</script>
??
????<style?type="text/css">
????????#Text1
????????{
????????????width:?375px;
????????}
????????#Button2
????????{
????????????width:?140px;
????????}
????</style>
??
</head>
<body>
????<form?id="form1"?runat="server">
????<div>
????????<asp:ScriptManager?ID="ScriptManager1"?runat="server">
????????<Services>
????????<asp:ServiceReference?Path="~/Service.asmx"/>
????????</Services>
????????</asp:ScriptManager>
????????<br?/>
????????Result: ?????????<input?id="Text1"?type="text"?/><br?/>
????????<br?/>
????????<input?id="Button1"?type="button"?value="Get?Server?Time"?onclick="CallNextDate()"?/>
????????<input?id="Button2"?type="button"?value="Say?Hello?World"?onclick="CallHelloWorld()"?/>
????????<input?id="Button3"?type="button"?value="Get?Book?Title"?onclick="CallBookTitle()"?/>
????????<br?/>
????????<br?/>
????????<br?/>
????????</div>
????</form>
</body>
</html>
? 在上面的標(biāo)記,通知的路徑屬性如何在ServiceReference元素ScriptManager控制點(diǎn)到Web服務(wù)類。這使得Web服務(wù)方法被稱為從腳本中的default.aspx頁(yè)面。內(nèi)嵌功能CallNextDate , CallHelloWorld , CallBookTitle是用來(lái)調(diào)用的三個(gè)Web服務(wù)方法。 OnSuccess和OnFail方法是回調(diào)方法,得到執(zhí)行的Web服務(wù)的方法得到了執(zhí)行。為了使客戶端的Web頁(yè)的正常工作,您需要添加以下設(shè)置的Web.config文件。 <runtime>
????<assemblyBinding?xmlns="urn:schemas-microsoft-com:asm.v1">
??????<dependentAssembly>
????????<assemblyIdentity?name="System.Web.Extensions"?publicKeyToken="31bf3856ad364e35"/>
????????<bindingRedirect?oldVersion="1.0.0.0-1.1.0.0"?newVersion="3.5.0.0"/>
??????</dependentAssembly>
??????<dependentAssembly>
????????<assemblyIdentity?name="System.Web.Extensions.Design"?publicKeyToken="31bf3856ad364e35"/>
????????<bindingRedirect?oldVersion="1.0.0.0-1.1.0.0"?newVersion="3.5.0.0"/>
??????</dependentAssembly>
????</assemblyBinding>
??</runtime>
本文使用微軟ASP.NET 3.5引用的System.Web.Extensions.dll等DLL,利用內(nèi)置的ASP.NET3.5中的AJAX技術(shù)僅供學(xué)習(xí)人員參考。 參考代碼下載
轉(zhuǎn)載于:https://blog.51cto.com/xiaoyinnet/196073
總結(jié)
以上是生活随笔為你收集整理的使用ASP.Net 3.5 的Ajax与Web服务开发实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WSE3.0构建Web服务安全(3):W
- 下一篇: .Net面试题(1)