举个例子,我想假设我想用jQuery Ajax部分克隆Gmail的界面,并实现定期自动保存和发送。特别是,让我们假设我关心错误处理,期待网络和其他错误,而不仅仅是乐观,我希望合理地处理不同的错误。
如果我使用$ .ajax()的“低级”功能,那么很清楚如何指定错误回调,但是$ .get(),$ .post()和.load的便捷方法( )不允许指定错误回调。
悲观错误处理的最佳做法是什么?是通过在$ .ajaxSetup()中注册带有某些包装集的.ajaxError()还是内省样式的全局错误处理程序?如果尝试的自动保存失败,并且可能是根据错误类型自定义的消息,那么代码的相关部分将启动自动保存以便显示“无法自动保存”类型警告会是什么?
谢谢,
答案 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}}(即网络问题)。