首页 > 解决方案 > 如何显示从 jquery ajax 调用引发的 .net 异常?

问题描述

我绝对确定这一定是重复的,但我找不到我正在寻找的答案,所以理想情况下,某种善良的灵魂将能够快速关闭它作为重复并指出我的答案寻找。

我对 .net MVC 操作进行 ajax 调用并引发异常。如何在ajax调用的错误函数中获取异常消息?

需要明确的是,我不想在 .net 中捕获异常,然后发送将在成功函数中接收的消息。在我的第一份开发工作中,这种类型的方法是在 api 中采用的,它实际上花费了杂货店很多钱,因为开发人员没有阅读文档并且错误地实现了集成。如果有一个实际的错误,这将永远不会发生。

同样,这是在处理付款,我不希望有人因为没有阅读文档而无意中批准了订单(首先没有文档,因为这是在内部用于小型企业)并认为因为没有引发错误,订单必须已成功处理。

话虽如此,我只是在寻找最简单的方法来获取异常的 Message 属性并显示它(异常本身不是自定义的,但它上面的消息会是;所以不用担心意外的异常会泄露系统细节通过)。

编辑:我现在意识到我被要求的东西是不可能的。我真正想要的东西是

a) 运行 ajax 方法的错误回调(当然也不运行成功回调)

b) 能够访问异常的消息

通常,异常会发回 500 响应。我是否可以修改响应以将消息放在可以从错误回调访问的某个位置?

标签: jquery.netajaxexceptionmodel-view-controller

解决方案


你可以试试这个:error:function() 将捕获异常

 $.ajax({
    url: '',
    type: "",
    data:'',
    beforeSend:function(){
    },
    success: function (data) {
    },
    error: function (jqXHR, exception) {
    var msg = '';
    if (jqXHR.status === 0) {
        msg = 'Not connect.\n Verify Network.';
    } else if (jqXHR.status == 404) {
        msg = 'Requested page not found. [404]';
    } else if (jqXHR.status == 500) {
        msg = 'Internal Server Error [500].';
    } else if (exception === 'parsererror') {
        msg = 'Requested JSON parse failed.';
    } else if (exception === 'timeout') {
        msg = 'Time out error.';
    } else if (exception === 'abort') {
        msg = 'Ajax request aborted.';
    } else {
        msg = 'Uncaught Error.\n' + jqXHR.responseText;
    }
    console.log(msg);
}

推荐阅读