代码之家  ›  专栏  ›  技术社区  ›  Christos Hayward

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

  •  6
  • Christos Hayward  · 技术社区  · 15 年前

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

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

    悲观错误处理的最佳实践是什么?它是通过向某些包装集注册.ajaxError()实现的,还是通过在$.ajaxSetup()中注册自省式全局错误处理程序实现的?启动自动保存时,代码的相关部分是什么样子的?如果尝试的自动保存失败,则会显示“could not autosave”类型的警告,或者是根据错误类型自定义的消息?

    1 回复  |  直到 9 年前
        1
  •  10
  •   BalusC    15 年前

    通常的做法是 $.ajaxSetup 为非执行期间的错误指定通用回调处理程序- $.ajax 功能。例如。

    function init() {
        $.ajaxSetup({
            error: handleXhrError
        });
    }
    
    function handleXhrError(xhr, errorType, exceptionThrown) {
        // ...
    }
    

    内部 handleXhrError 你可以像Gmail那样显示一个模式窗口或一些通知栏,或者替换整个窗口 document ,取决于功能要求。您可以根据通过 xhr.responseText 和/或 HTTP status code xhr.status . 响应主体和状态的值可以从服务器端控制。这些应该提供有关问题以及要采取的错误操作的足够信息。这个 errorType 将等于 'timeout' 发生超时时(即网络问题)。