Jquery Servlet Ajax全局异常处理

Jquery Servlet Ajax全局异常处理,jquery,servlets,error-handling,Jquery,Servlets,Error Handling,我有一个用于AJAX调用的全局处理程序 $.ajaxSetup({ error: function(xhr, textStatus, errorThrown) { //do something } }); 如果出现错误,我的servlet过滤器会发送一个特定的错误 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) thro

我有一个用于AJAX调用的全局处理程序

$.ajaxSetup({
    error: function(xhr, textStatus, errorThrown) {
             //do something 
    }
});
如果出现错误,我的servlet过滤器会发送一个特定的错误

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
        ServletException {

    if(somethingwrong()) {
        response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "unavailableimage");    
    }
}
你会推荐做像这样的事情吗

$.ajaxError({
    error: function(xhr, textStatus, errorThrown) {
        if (xhr.status == 408) {
            //doSomething
        }
        else if xhr.responseText.contains("unavailableimage"){
            //doSomething
        }
    }
}); 

因为我认为每个浏览器的responseText都不同。

在我的项目中,我使用此函数调试ajax:

$.ajaxSetup({
        error:function(x,e){
            if(x.status==0){
                alert('You are offline!!\n Please Check Your Network.');
            }else if(x.status==404){
                alert('Requested URL not found.');
            }else if(x.status==500){
                alert('Internal Server Error.\n'+x.responseText););
            }else if(e=='parsererror'){
                alert('Error.\nParsing JSON Request failed.');
            }else if(e=='timeout'){
                alert('Request Time out.');
            }else {
                alert('Unknow Error.\n'+x.responseText);
            }
        }
    });
因此,使用您的代码,您可以测试
x.responseText
是否包含“unavailableimage”,但通过错误代码和错误消息测试它更好;)

另一种仅获取响应错误消息的方法是使用:
var responseText=$.httpData(xhr)
,具体取决于您的JQuery(<1.5.2)版本


或者使用json:var responseText=$.parseJSON(x.responseText)

响应正文可通过
xhr.responseText
获得


但是,问题是(非常感谢anwser。我现在的问题是,responseText类似于-->..内部服务器错误(unavilableimage)。您能测试错误是否包含我的“unavilableimage”吗?您是否也警告了“e”变量?以查看它显示了什么。让我知道:)尝试同时向“x.statusText”发出警报。e和x.statusText都出现“错误”,但我可以在responseText:)中进行包含搜索。谢谢,但我使用的是jQuery 1.6。我的问题更多的是servlet问题,而不是jQuery问题。我现在可以很好地使用x.responseText再次感谢您的帮助我很高兴它帮助了您;)非常感谢巴卢斯,这正是我想要的。你拯救了这一天:-)
var errorMessage = $(xhr.responseText).filter('p:eq(1)').find('u').text();

if (errorMessage == 'unavailableimage') {
    // ...
}
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
response.getWriter().write("unavailableimage");
if (xhr.responseText == 'unavailableimage') {
    // ...
}