介绍ASP.NET AJAX

一般来说,有成功就有失败,异步调用也是一样,会出现请求异常的情况。在传统的Ajax中,不论请求成功还是失败,回调函数都会被调用,然后我们可以判断 XMLHttpRequest对象的状态确定请求是否成功,如果失败了,可以进行异常处理。

但是,在ASP.NET AJAX应用中,只有成功时回调函数才会被调用,那么失败时怎么办?其实,ASP.NET AJAX允许我们在调用后台方法时指定两个回调函数,语法如下:

类名.方法名(参数1,参数2,……,参数n,请求成功时的回调函数,请求失败时的回调函数)

只不过在前面的应用中,我们省略了第二个回调函数。为了理解这个地方,我们做一个小实验,打开上一篇中的ASPNETAJAXTest这个程序,将ajax.js这个文件里的内容做如下修改:

ajax.js:

//单击btnSayHello时调用的JS函数  


function btnSayHello_onClick()   


{   


SayHelloService.SayHello(OnSucceeded,OnFailded);  


}  


//成功时的回调函数   


function OnSucceeded(reusltText)   


{  



$get("result").innerHTML=reusltText;  



}  


//失败时的回掉函数  


function OnFailded(error)  


{  



$get("result").innerHTML="调用失败。错误信息:"+error.get_message();  



}  


其中异常时的回调函数有一个参数error,它是一个ASP.NET AJAX框架定义的一个对象,包含了异常信息。其中get_message()方法将返回异常信息字符串。

为了看效果,我们还要到WebService里搞一点破坏,让请求出现异常,“破坏”后的WebService如下:

SayHelloService.cs:  


using System;  


using System.Web;using System.Collections;  


using System.Web.Services;  


using System.Web.Services.Protocols;using System.Web.Script.Services;  



[WebService(Namespace = "http://tempuri.org/")]  




[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  



[ScriptService]public class SayHelloService  


System.Web.Services.WebService{public SayHelloService() {   


}  


[WebMethod]public string SayHello(){  



//Hello myHello = new Hello();  



//return myHello.SayHello();         


throw new Exception("我来搞破坏!");  


}  


} 


这里我们手工抛出了一个异常。下面运行程序,会得到如下结果:

介绍ASP.NET AJAX

相关推荐