1

我有一个使用 jQuery 的 ajax 后调用,如下所示:

var params = {};
params.type = "POST";
params.url = url;
params.success = successFn;
params.error = errorFn;
$.ajax(params);

在这种情况下,我的 url 是一个 Web 服务,它故意抛出一个异常来测试错误处理。当我在码头运行它时,错误函数被调用,并带有异常文本。当我在 Tomcat 中运行它时,错误函数只是返回“内部服务器错误”。

在这两种情况下,我都看到服务器上抛出了异常,但返回到浏览器的消息不同。

这是我需要在应用程序级别处理的事情吗?或者有没有为此的tomcat配置?

4

1 回答 1

1

听起来 Jetty 和 Tomcat 处理响应的方式不同。

查看Content-TypeHTTP 标头,服务器返回的 HTTP 状态代码,并查看是否有任何错误处理程序在服务器上将响应重定向到客户端之前。

一些伪代码可以作为在服务器上运行的示例:

HttpServletResponse resp; // likely passed in as argument

resp.setContentType("application/json");
try {
    // do something
} catch (Exception e) {
    String jsonError = "{\"error\":\"" + e.getMessage() + "\"}";
    resp.getWriter().print(jsonError);
    resp.sendError(500);
}

这样,您应该能够使用 JQuery 的$.ajaxError()事件处理程序并解析错误消息。

于 2013-09-12T03:34:21.563 回答