2

我想从 Java Servlet 设置有关 Ajax 错误操作的错误消息。

request.setAttribute(BreezeWebConstants.ERROR_MESSAGE, errMsg);
response.setStatus(HttpServletResponse.SC_FORBIDDEN);

error : function(jqXHR, textStatus, errorThrown) {
alert("Move Ticket Error - " + textStatus);
console.log("Move Unknown Ticket Error");
}

textStatus 是在 Jquery 中预定义的,但我需要在 java servlet 中设置自定义错误消息并在此错误函数上检索它。怎么做?

谢谢。

4

2 回答 2

3

只需将错误消息作为纯文本或 XML 或 JSON 写入响应正文。

这是一个假设纯文本的示例:

response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.setContentType("text/plain;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(errMsg);

您可以按如下方式提取它:

var message = jqXHR.responseText;

请注意,jQuery 也有内置的 XML 和 JSON 解析,所以它也很容易。

于 2012-12-10T13:33:35.773 回答
1

尝试使用$.ajaxSetup()来获得正确的错误,如下所示:

$(function() {
    $.ajaxSetup({
        error: function(jqXHR, exception) {
            if (jqXHR.status === 0) {
                alert('Move Ticket Error - Not connect.\n Verify Network.');
            } else if (jqXHR.status == 404) {
                alert('Move Ticket Error - Requested page not found. [404]');
            } else if (jqXHR.status == 500) {
                alert('Move Ticket Error - Internal Server Error [500].');
            } else if (exception === 'parsererror') {
                alert('Move Ticket Error - Requested JSON parse failed.');
            } else if (exception === 'timeout') {
                alert('Move Ticket Error - Time out error.');
            } else if (exception === 'abort') {
                alert('Move Ticket Error - Ajax request aborted.');
            } else {
                alert('Uncaught Move Unknown Ticket Error.\n' + jqXHR.responseText);
            }
        }
    });
});

只需打一个ajax调用。如果出现任何错误,您将收到警报。

于 2013-01-28T13:31:50.987 回答