是这么个情况,
页面采用Ajax发送请求
服务器接收到后,发送错误信息
服务器响应代码如下:
response.setContentType("text/html;charset=UTF-8");
response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, new String("出错啦!大哥".getBytes(),"iso-8859-1"));
客户端获取错误信息
alert(obj.statusText); // obj为请求对象
当我将此项目发布在Tomcat6.0.14上时
页面可以正常打印出 "出错啦!大哥"
但我如果将项目发布在Tomcat6.0.20上时
页面死活就只提示:“Service Unavailable”,这个提示是错误码默认显示的提示,而不是我自定义的错误提示信息。
通过实验,发现是两个版本的Jar包问题,换了Jar包就可以。
但我想6.0.20的所有的Jar包文件应算是一个整体,不能随意替换掉某个包的。
请问大家是否碰到这类情况,如何解决?
[b]问题补充:[/b]
····那还是不知道该怎么办呀··我不太想换旧的版本来使用哦
这个问题很可能就是tomcat版本它本身的问题,如果你不换jar包那就没办法在服务端解决,
不过可以在客户端变相解决
服务器响应代码如下:
response.setContentType("text/html;charset=UTF-8");
response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, new String("出错啦!大哥".getBytes(),"iso-8859-1"));
客户端获取错误信息
判断 obj.status == HttpServletResponse.SC_SERVICE_UNAVAILABLE的值
再进行提示alert("出错啦!大哥");不过这个信息就得写在客户端
我当时遇到6.0.xx的版本时不能用,直接换能用的那个tomcat版本 6.0.14.
这个就要看它6.0.20改变了什么实现,也许它把内部实现变了
我觉得6.0.20那种处理才是http的标准处理方法。你可以看一下是不是status code改变了? 我觉得在这个服务无效的时候应该返回50X错误才对。根据错误代码来判断是什么错误,也是比较普遍的做法,就是涉及到国际化的话,就要在javascript里做了。