發布: 2008-4-09 11:07 |
作者: ASP.NET 2.0 Ajax |
來源:
希賽網 |
查看: 172次 | 進入軟件測試論壇討論
領測軟件測試網
接下來即可用ASP.NET AJAX異步調用這個Web Service了。首先新建一個ASP.NET頁面。當然,該頁面所在的Web站點必須已經配置好了ASP.NET AJAX的支持,詳細配置方法請參考本書第Ⅰ卷。在該頁面上添加一個ScriptManager服務器端控件,這是每一個ASP.NET AJAX應用程序都必不可少的:
為了讓ASP.NET AJAX為前面的Web Service生成客戶端異步調用代理,我們需要在Script- Manager控件中添加該Web Service的引用:
這種聲明語法隱約中傳遞了這樣的含義:Web Service的客戶端異步調用代理腳本將由ScriptManager控件管理——這非常自然,不是嗎?ScriptManager就是用來管理(manage)腳本(script)的呀!關于標簽以及標簽的詳細使用方法,在本書第Ⅰ卷中已經有詳細討論,這里不贅。
隨后聲明程序界面中必不可少的UI元素:
onclick="return btnInvoke_onclick()" />
其中id為tbName的 作為文本框,用來讓用戶輸入名字;id為btnInvoke的作為按鈕,點擊將觸發異步調用Web Service;id為result的
則用來將Web Service返回的問候內容顯示出來。這些id均將在稍后用到。
上面代碼中btnInvoke按鈕定義了click事件的事件處理函數,該函數的實現如下。注意這是客戶端JavaScript代碼:
function btnInvoke_onclick() {
var theName = $get("tbName").value;
SimpleWebService.SayHello(theName, onSayHelloSucceeded);
}
首先用$get ("tbName").value取得了用戶在文本框中輸入的文字。然后第二句Simple- WebService.SayHello()即調用了ASP.NET AJAX異步通信層自動為SimpleWebService生成的客戶端代理。這是本示例程序中最為重要的一句——與用C#在Web Service中聲明的SayHello()方法簽名相比,其參數個數以及順序均完全一樣,甚至調用語法也沒什么特別之處,都是[NameSpace]. [ClassName].[MethodName](param1,param2,...,callbackFunction)。由此我們能夠看出 ASP.NET AJAX異步通信層為降低開發者學習曲線、提高開發者生產效率所做出的努力及良苦用心。
關于用來取得DOM元素引用的$get()方法,請參考本卷第1章中的介紹。
客戶端代理還提供了額外的一個參數——異步調用的回調函數名稱,這里為onSayHelloSu- cceeded。該回調函數將在服務器端異步調用成功返回后由ASP.NET AJAX異步通信層自動調用。onSayHelloSucceeded()回調函數的代碼如下:
function onSayHelloSucceeded(result) {
$get("result").innerHTML = result;
}
文章來源于領測軟件測試網 http://www.kjueaiud.com/