
??此文章摘自《ASP.NET AJAX程式设计:第II卷(客户端)》定价:55元 特价:41.25元 购买>>
接下来即可用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; }
[1] [2] [3] [4]
|