0 Comments

ASP.NET AJAX框架调用后台代码的基本方法(2)

发布于:2014-03-11  |   作者:广州网站建设  |   已聚集:人围观

处理异常

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

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

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

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

ajax.js:

 1//单击btnSayHello时调用的JS函数
 2function btnSayHello_onClick()
 3 {
 4    SayHelloService.SayHello(OnSucceeded,OnFailded);
 5 }
 6
 7//成功时的回调函数
 8function OnSucceeded(reusltText)
 9 {
10    $get("result").innerHTML=reusltText;
11 }
12
13//失败时的回掉函数
14function OnFailded(error)
15 {
16    $get("result").innerHTML="调用失败。错误信息:"+error.get_message();
17 }

其中异常时的回调函数有一个参数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("我来搞破坏!"); } }

这里我们手工抛出了一个异常。下面运行程序,会得到如下结果:
广州网站建设,网站建设,广州网页设计,广州网站设计

如上图,当出现异常时,不仅自动调用了异常处理回调函数,还很方便地取得了错误信息。

结束语

本篇介绍了从JavaScript中调用WebService的一般方法、基本原理及使用异常处理,并且回答了上一篇留下的几个问题。然而还有一个问题没有讨论:到目前为止,我们调用的后台方法都是没有参数的,那么如果有参数,ASP.NET AJAX可以实现JavaScript变量类型和C#变量类型的自动转换吗?如果是复杂类型呢?如实体类、各种对象。再进一步,如果可以,应该怎么来做呢?我们将在下一篇讨论这个问题。

标签:
飞机