如何在getJSON中捕获服务器错误

时间:2015-03-14 18:51:40

标签: javascript jquery asp.net-web-api

我想在我的getJSON调用中设置错误处理。

这是我的主叫代码:

 try
 {
     $.getJSON(uri)
       .done(function (data) {    
            //do some thing with the result
     }).error(errorHandler());
 }
 catch (err)
 {
   alert(err);
 }
function errorHandler(page) {
    return function (jqXHR, textStatus, errorThrown) {
        console.log(page); // it works
    };
}

我的网络API代码是:

[HttpGet]
public IEnumerable<InformedCommon.Time> GetTimes(string licenseKey, string camIndex, string date, string id, string guid)
{       
    throw new Exception("hi");
}

不会调用错误处理程序代码。

在视图元素控制台中我得到了:

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

然后我找到了这个链接: http://www.paulbill.com/97/how-to-handle-errors-using-getjson-jquery

所以,我把它重新编码为:

$.ajax({
    url: uri,
    dataType: 'json',
    success: function (data) {
        console.log('SUCCESS: ', data);
    },
    error: function (data) {
        console.log('ERROR: ', data);
    }
});

但是仍然没有发现这个错误。

所以: 什么是从服务器调用处理错误的最佳方法?

1 个答案:

答案 0 :(得分:1)

要从getJSON捕获错误,请使用.fail,而不是错误

$.getJSON(uri)
       .done(function (data) {    
            //do some thing with the result
     }).fail(function(){
    //handle your Error here
});

但是如果你在服务器脚本上抛出一个Exception,它就不会转移到客户端 - 只是500内部服务器错误。

我认为您应该在服务器端捕获异常并将其以JSON格式发送给客户端,然后在.done函数中处理它。