AJAX 客户端调用错误的一般处理

General handling of AJAX call error on client side

我们有一个使用 PrimeFaces 的 JSF 2.2 应用程序。

现在,当发生错误时,我会检查 AJAX 请求并提供部分响应(如 BalusC's anwer to this question 所示)。

但是,如果没有服务器再处理错误,例如由于连接丢失?目前没有任何反应,让用户感到困惑。

我在 that question 中找到了一个有用的提示,但我想以一般方式解决这个问题,以便所有失败的 AJAX 调用都尝试重定向到起始页- 然后可能会收到浏览器连接错误信息。

对于标准 JSF ajax,使用 jsf.ajax.addOnError() 设置默认错误处理程序。例如

jsf.ajax.addOnError(function(data) {
    alert(data.responseText);
});

另请参阅 JSF 2.2 spec 的第 13.3.6.2 章。您可以在 JSF 规范的 table 14-4 中找到 data 对象的所有属性。

对于 PrimeFaces 4+,在 jQuery 中挂接 pfAjaxError 事件(在 4 之前,只需使用 ajaxError)。例如

$(document).on("pfAjaxError", function(event, xhr, options) {
    alert(xhr.responseText);
});

只需对其进行相应的自定义,即可在顶部显示一些 div。