考虑jquery代码
var posting = $.post(
url,
json
).fail(function(jqXHR, textStatus, errorThrown) {
alert("An Error Occurred: "+jqXHR.responseText);
}
).done(function(response, textStatus, jqXHR) {
alert("Success: " + jqXHR.responseText);
}
)
;
在done()方法中,responseText是我所期望的,但在fail()方法中,它总是空字符串。
Servlet代码如下:
try {
doSomething();
response.getOutputStream().print("doSomething worked properly");
}
catch (Exception e) {
response.sendError(500, e.getMessage());
response.getOutputStream().print("doSomething failed with error: " + e.getMessage());
}
在fail方法中,我希望看到jqXHR.responseText具有来自servlet print语句的值,但它总是为空。
答案 0 :(得分:1)
我让它工作,而不是调用response.sendError(),这显然是“清除缓冲区”[javadoc:使用指定的状态向客户端发送错误响应并清除缓冲区。]我将其更改为调用:
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
现在它完成了我在javascript / jquery方面的期望。
感谢您的光临。