有关Ajax便捷方法和错误处理的jQuery最佳实践是什么?

时间:2010-05-21 14:17:28

标签: javascript jquery ajax

举个例子,我想假设我想用jQuery Ajax部分克隆Gmail的界面,并实现定期自动保存和发送。特别是,让我们假设我关心错误处理,期待网络和其他错误,而不仅仅是乐观,我希望合理地处理不同的错误。

如果我使用$ .ajax()的“低级”功能,那么很清楚如何指定错误回调,但是$ .get(),$ .post()和.load的便捷方法( )不允许指定错误回调。

悲观错误处理的最佳做法是什么?是通过在$ .ajaxSetup()中注册带有某些包装集的.ajaxError()还是内省样式的全局错误处理程序?如果尝试的自动保存失败,并且可能是根据错误类型自定义的消息,那么代码的相关部分将启动自动保存以便显示“无法自动保存”类型警告会是什么?

谢谢,

1 个答案:

答案 0 :(得分:10)

通常的做法是使用$.ajaxSetup为非$.ajax函数指定错误的通用回调处理程序。 E.g。

function init() {
    $.ajaxSetup({
        error: handleXhrError
    });
}

function handleXhrError(xhr, errorType, exceptionThrown) {
    // ...
}

handleXhrError内,您可以显示模式窗口或某些通知栏,例如Gmail,或者替换整个document,具体取决于功能要求。您可以根据xhr.responseText和/或xhr.status errorType获得的回复正文采取行动。响应主体和状态的值可从服务器端控制。这些应提供有关问题的足够信息以及要采取的错误操作。发生超时后,'timeout'将等于{{1}}(即网络问题)。