本文介绍在客户端js中如何调用程序内部的Web Services
1. 创建可供客户端js调用的Web Service
新建一个Web Service: UserSvc.asmx
1) 添加using System.Web.Script.Services
2) 为类UserSvc加上[ScriptService]的Attribute
3) 与普通WebServices一样,方法需要加上[WebMethod]的Attribute
现在转到客户端,在页面上添加ScriptManager控件
如果使用VS 2008,在客户端将会智能感知出UserSvc及其方法。在UserSvc中定义的GetUserName方法,在客户端调用的时候接受几个参数,首先是在UserSvc中定义的参数列表,然后是Webservice调用成功后回调的方法,调用失败后回调的方法,最后一个是上下文参数。
本例中,调用web service成功后回调的方法是 getUserNameSucceed, 失败后的回调方法是getUserNameFailed方法,而上下文参数我随便定义了一个{msg : "this is a message"}的对象
对于回调函数的方法,定义为3个参数,第一个result是web service 方法的返回值,第二个是上下文参数,第三个methodName为本次调用的Webservice中定义的方法名。
为测试异常发生的情况,将UserSvc中的GetUserName方法略作修改:
调用Web Service的时候,可以设置调用超时的时间限制:
改一下web service端的GetUserName方法:
2. 处理复杂类型
在服务端新建一个UserInfo类:
泛型支持:
3. Page Method
客户端js还可以调用在页面的后台代码页的方法: