getResponseHeader在IE 8中返回null

jam*_*007 5 jquery internet-explorer httpresponse

对于Spring MVC Controller中的验证错误,我将自定义标头错误设置为响应标头.我可以在Firefox 3.5中访问响应标头.但不是在IE 8中.请告诉我,向Jquery客户端显示自定义错误消息的正确方法.

    var jqxhr=$.post("saveAcc.htm",{ data: data});

    jqxhr.success(function() { 
        alert("Saved");
    });

    jqxhr.error(function(thrownError){
        fnSetError(jqxhr.getResponseHeader('error'));
        alert(jqxhr.getAllResponseHeaders()); //returns empty
        //alert('responseText '+ thrownError.responseText);
        alert(jqxhr.getResponseHeader('error')); //return null                      
        oTable.fnReloadAjax(); 
     });
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 0

如果要调用 JS 错误处理函数,请在服务器上抛出异常。

或者,您可以将 HTTPStatus 设置为 500 或其他一些错误状态

response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
//response.setStatus(500);
Run Code Online (Sandbox Code Playgroud)

但我认为你的做法是错误的。验证错误不是应用程序错误,您应该处理成功消息中的错误。

jqxhr.success(function(data) { 
    if(data['validationMessages'].length > 0 ) {
        //deal with the validation issues
    }
});
Run Code Online (Sandbox Code Playgroud)

这可能会有所帮助:http://outbottle.com/spring-3-web-mvc-exception-handling-incorporating-ajax/