如何从失败的jQuery请求中获取异常消息?

问题描述:

如果我将jQuery ajax与错误处理程序一起使用,并且我调用的ASP.NET MVC操作引发异常,我希望能够在用户的异常中显示消息。现在我正在使用:如何从失败的jQuery请求中获取异常消息?

$.ajax({ 
    ... 
    error: function(request,status,error) { 
     var exp = new RegExp('<title>(.*)<\/title>','i'); 
     if (exp.exec(request.responseText)) { 
      alert(RegExp.lastParen); 
     } 
     else { 
      alert(status); 
     } 
    } 
}); 

我希望规范的jQuery实现,而不是滚动我自己的。

对于它的价值,我通常会有任何操作返回包含在try/catch块中的JsonResult,以便它不会抛出异常。相反,我用每个Json数组返回两个参数:“ok”(true/false)和“message”(包含如果出现错误时显示给用户的消息)。

然后我省略$ .ajax“error”参数,并在JsonResult结果的“ok”参数上做一个简单的分支。

+0

+1我也曾想过这件事,但它有点重新定义了“成功”的含义吗? – tvanfosson 2009-04-28 11:32:36

+0

我也做类似的事情,我觉得它允许我做我的日志记录,并控制如何以及向用户显示什么。 – 2009-04-28 14:11:03

没有错,你在做什么,但如果你想要想法......如果请求具有应用程序/ json头,那么将错误序列化为JSON的自定义错误页怎么办?

+0

你能想到一种方法来做到这一点,而不需要实际捕获和消耗异常吗?在我的情况下,这些都是非常特殊的条件,我想让它们冒泡以便它们被记录下来。 – tvanfosson 2009-04-28 11:36:15

您正在寻找的东西更容易比5行代码?真?

第1行解析错误。这是你的服务器的自定义,所以我没有看到任何jQuery的通用工具可以提供帮助。

第2-5行,根据解析显示不同的错误。同样,这是您的服务器自定义的。

我个人不会在这里使用匿名函数(称之为alertUser或其他),但我没有看到这种方法有什么问题。