让我们先从服务器端的Web Service入手。将该Web Service命名为MathService,并在其中定义了一个名为Divide()的方法,用来执行除法操作。Divide()方法所接受的两个参数分别代表被除数和除数,其逻辑非常简单,代码如下:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class MathService : System.Web.Services.WebService
{
[WebMethod]
public int Divide(int a, int b)
{
return (int)(a / b);
}
}
这里有必要再次提醒一下,Web Service类要添加[ScriptService]属性,其中需要暴露给客户端的方法也要添加[WebMethod]属性——这些都是允许从客户端调用该Web Service代理的必要条件。
在ASP.NET页面中,添加ScriptManager控件以及上述Web Service的引用:
然后在ASP.NET页面中定义程序的界面:
其中前两个(id分别为tbA和tbB)用来让用户输入被除数和除数;第三个(id为btnInvoke)则作为按钮(type="button")用来触发对服务器端Web Service的调用,并显示除法完成后的商;下面id为result的
用来显示可能出现的异常信息。
btnInvoke的click事件的处理函数为btnInvoke_onclick(),其代码如下:
function btnInvoke_onclick() {
var a = $get("tbA").value;
var b = $get("tbB").value;
MathService.Divide(a, b, onSucceeded, onFailed);
}
注意其中粗体部分,即调用Web Service客户端代理的一行。其中不但传入了被除数和除数(a和b),还传入了成功调用后的回调函数onSucceeded以及失败时的回调函数onFailed。
成功调用时的回调函数onSucceeded()比较简单,这里不赘:
function onSucceeded(result) {
$get("btnInvoke").value = result;
$get("result").innerHTML = "";
}