san*_*den 3 error-handling jquery servlets
我有一个AJAX调用的全局处理程序
$.ajaxSetup({
error: function(xhr, textStatus, errorThrown) {
//do something
}
});
Run Code Online (Sandbox Code Playgroud)
如果出现错误,我的servlet过滤器会发送一个特定的错误
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
if(somethingwrong()) {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "unavailableimage");
}
}
Run Code Online (Sandbox Code Playgroud)
你会建议做点什么吗?
$.ajaxError({
error: function(xhr, textStatus, errorThrown) {
if (xhr.status == 408) {
//doSomething
}
else if xhr.responseText.contains("unavailableimage"){
//doSomething
}
}
});
Run Code Online (Sandbox Code Playgroud)
因为我认为每个浏览器中的responseText都不同.
响应机构可通过xhr.responseText.
但是,HttpServletResponse#sendError()(< - 单击链接以自己阅读Javadoc)将使用servletcontainer的默认错误页面模板或您定义的自定义错误页面模板web.xml.这是一个HTML文档,因此您必须自己解析.
根据您对其他答案的评论,您似乎正在使用Tomcat并检索其默认错误页面; 该消息可用作第二个<u>元素的第一个元素<p>.所以这应该做:
var errorMessage = $(xhr.responseText).filter('p:eq(1)').find('u').text();
if (errorMessage == 'unavailableimage') {
// ...
}
Run Code Online (Sandbox Code Playgroud)
您只需要记住,这种方式与(默认)错误页面的标记紧密相关.更好的是不使用HttpServletResponse#sendError(),但只需设置状态HttpServletResponse#setStatus()(< - 是,单击它以读取javadoc,答案就在那里)并自己将错误消息写入响应正文:
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
response.getWriter().write("unavailableimage");
Run Code Online (Sandbox Code Playgroud)
这样xhr.responseText就是这样unavailableimage.
if (xhr.responseText == 'unavailableimage') {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3411 次 |
| 最近记录: |