本章主要介紹怎樣用Ajax.net實現Callback技術。大家都知道Callback技術是Asp.net 2.0的新技術,它是Ajax.net出來之前的一個過渡技術。使用它也能實作類別似Ajax般的無重新整理技術,但是由於使用比較麻煩,限制比較多,當 Ajax.net架構出來之後Callback技術就被冷落了。但所有技術都有它存在的價值和意義,在某些時候,特別是小型資料轉送的時候,使用 Callback技術比用Ajax效率更高,而且在Ajax.net架構下使用Callback技術,頁面不用繼承ICallbackEventHandler介面,步驟也簡單很多。現在在下就講一下怎樣在Ajax.net架構下使用Callback技術。
第一步:建立WebService
在Ajax.net架構下使用Callback技術需要用WebService作為資料轉送的載體。我們先建立一個Asp.net Ajax-Enabled Web Site。然後添加一個新的WebService並命名為SimpleService.asmx。
然後我們寫一個簡單WebService,記得一定要加上System.Web.Script.Services.ScriptService屬性,否則我們不能在用戶端訪問該WebService。
具體的代碼如:
這是一個非常簡單的WebService,在下只簡單改了HelloWorld的代碼。當我們運行該WebService,隨便輸入一個名字時,我們會得到“Hello,somenames”這樣的一個反饋資訊。
運行一下,如果可以看到以下效果,那麼我們的SimpleService.asmx就完成了。
第二步:調用WebService
我們回到Default.aspx,由於我們建立的是Asp.net Ajax-Enabled Web Site,因此Default.aspx上已經自動產生了ScriptManager組件代碼。我們要對它作一些修改,如下所示:
<asp:ScriptManager ID="ScriptManager1" runat="server" >
<Services>
<asp:ServiceReference Path="SimpleService.asmx" />
</Services>
</asp:ScriptManager>
加粗的地方要寫正確WebService的檔案名稱。
修改完ScriptManager的設定後,我們就可以開始編寫JavaScript來callback這個WebService了。
我們先在設計介面裡拖進一個HtmlInputText控制項和一個HtmlInputButton控制項,然後雙擊Button控制項寫代碼。
具體代碼如下:
<script language="javascript" type="text/javascript">
// <!CDATA[function Button1_onclick() {
ret = SimpleService.HelloWorld(document.getElementById('Text1').value, OnComplate, OnTimeOut, OnError);
return true;
}function OnComplate(arg)
{
alert(arg);
}function OnTimeOut(arg)
{
alert("TimeOut!");
}function OnError(arg)
{
alert("eRROR!");
}// ]]>
</script>
函數OnComplate是成功調用完畢後用戶端所執行的函數,OnTimeOut是當伺服器響應逾時後用戶端所執行的函數,OnError就是當發生錯誤時用戶端所執行的函數。
注意:在JavaScript中的SimpleService是SimpleService.asmx的類名,不是檔案名稱。如果你更改了WebService的類名稱,這裡的名稱是要跟著改變的,而ScriptManager中的SimpleService.asmx是檔案名稱,這一點大家一定要分清楚。
OK,運行!
結束: