jQuery post fail()回调有空responseText

时间:2014-09-18 18:30:32

标签: jquery servlets

考虑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语句的值,但它总是为空。

1 个答案:

答案 0 :(得分:1)

我让它工作,而不是调用response.sendError(),这显然是“清除缓冲区”[javadoc:使用指定的状态向客户端发送错误响应并清除缓冲区。]我将其更改为调用:

response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

现在它完成了我在javascript / jquery方面的期望。

感谢您的光临。