在上一篇《MVC TIP4:为捕获路由及通用异常处理》里,我们讲了如何捕获MVC WEB站点的未捕获异常,这里我们还要解决一个问题,就是JQuery Ajax异常的捕获。Ajax异常的捕获仍旧需要借助于全局的ErrorController控制器,及其视图,在Views的Error文件夹下的Index视图。
我们知道,一个Ajax调用,通常像如下的形式:
如果调用出错,也就是调用CityController控制的GetProvince方法出错,假设throw new Exception(“出错啦”);。那么图中2处返回的就是Index.aspx的整个静态化HTML,查看Index.aspx:
其整个静态化的HTML,将会包含很多内容。当然其中也包括了我们需要的Exception的Message,我们仅仅需要这部分的内容。
于是我们首先需要在出错视图中定义一个ErrorMsg的ID,见图中。然后,我们的JQuery编码如下:
var $errorPage = XmlHttpRequest.responseText;
alert($("#ErrorMsg", $errorPage).text());
//alert($("#ErrorMsg", XmlHttpRequest.responseText).text());
注意,我们也可以拿注释掉的那行代码来代替。整体意思就是取出XmlHttpRequest.responseText,然后查找到ErrorMsg,然后显式出来。