我想在我的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);
}
});
但是仍然没有发现这个错误。
所以: 什么是从服务器调用处理错误的最佳方法?
答案 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函数中处理它。