【问题标题】:How do I get the exception message from a failed jQuery request?如何从失败的 jQuery 请求中获取异常消息?
【发布时间】:2009-04-28 03:01:19
【问题描述】:

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

 $.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 实现,而不是我自己的。

【问题讨论】:

    标签: jquery asp.net-mvc ajax exception


    【解决方案1】:

    对于它的价值,我通常有任何返回 JsonResult 的操作,该 JsonResult 包装在 try/catch 块中,这样它就不会引发异常。相反,我为每个 Json 数组返回两个参数:“ok”(真/假)和“message”(包含在出现错误时向用户显示的消息)。

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

    【讨论】:

    • +1 我也想过这个,但它重新定义了“成功”的含义,不是吗?
    • 我也做了类似的事情,我觉得它可以让我进行日志记录并控制向用户显示的方式和内容。
    【解决方案2】:

    你正在做的事情没有错,但是如果你想要想法......如果请求具有 application/json 标头,自定义错误页面会将错误序列化为 JSON 怎么样?

    【讨论】:

    • 你能想出一种方法来做到这一点而不实际捕获和消耗异常吗?在我的情况下,这些都是非常特殊的情况,我想让它们冒泡以便记录下来。
    • 我不知道您的应用程序日志设置,但您可以在 Global.asax 中设置 Application_Error 处理程序 ... catch(Exception ex) { if (json header) { write out json error } else {扔; } ...或日志(前);并且不要重新抛出(或者你可能会得到双重错误)但同样,不知道你的错误日志设置
    • 还没有,但我打算使用 ELMAH。
    【解决方案3】:

    您正在寻找比 5 行代码更简单的东西?真的吗?

    第 1 行,解析错误。这是您的服务器自定义的,所以我看不出 jQuery 的任何通用工具有什么帮助。

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

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

    【讨论】:

    • 我希望有人知道 jQuery 已经隐藏了异常文本的地方,而我只是错过了它。
    • 实际上,如果 jQuery 会为我找到它并将文本填充到错误参数中,那会更好,但它看起来好像只用于客户端错误。
    猜你喜欢
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多