发布: 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;
}
文章来源于领测软件测试网 https://www.ltesting.net/