【问题标题】:General handling of AJAX call error on client side客户端 AJAX 调用错误的一般处理
【发布时间】:2015-04-16 18:28:06
【问题描述】:
我们有一个使用 PrimeFaces 的 JSF 2.2 应用程序。
现在,当发生错误时,我会检查 AJAX 请求并提供部分响应(如 BalusC's anwer to this question 所示)。
但是,如果不再有服务器来处理错误,例如由于连接丢失?目前,什么都没有发生,让用户感到困惑。
我在that question 中找到了一个提示,它有效,但我想以一般方式解决这个问题,以便所有失败的 AJAX 调用都尝试重定向到起始页 - 然后可能会收到浏览器连接错误信息。
【问题讨论】:
标签:
ajax
jsf-2
primefaces
error-handling
【解决方案1】:
对于标准 JSF ajax,使用jsf.ajax.addOnError() 设置默认错误处理程序。例如
jsf.ajax.addOnError(function(data) {
alert(data.responseText);
});
另见JSF 2.2 spec 的第 13.3.6.2 章。您可以在 JSF 规范的表 14-4 中找到 data 对象的所有属性。
对于 PrimeFaces 4+,在 jQuery 中挂钩 pfAjaxError 事件(在 4 之前,只需使用 ajaxError)。例如
$(document).on("pfAjaxError", function(event, xhr, options) {
alert(xhr.responseText);
});
只需相应地自定义它以在顶部显示一些 div。