【问题标题】:What arguments are supplied to the function inside an ajax .done?为 ajax .done 中的函数提供了哪些参数?
【发布时间】:2012-10-19 21:54:11
【问题描述】:

我有以下:

    $.ajax(link.href,
    {
        cache: false,
        dataType: 'html'
    })
        .done(onDialogDone)
        .fail(onDialogFail);

这很好用,并且调用了 onDialogDone。但是,我应该期望看到哪些参数提供给 onDialogDone 以及我应该期望看到 onDialogFail 的哪些参数。

我问的原因是因为我使用打字稿,并且我想在定义 onDialogDone 和 onDialogFail 时提供正确的参数。

【问题讨论】:

    标签: javascript ajax jquery typescript


    【解决方案1】:

    签出this

    方法(jqXHR 和 Deferred 实现的一部分,此处显示仅为清晰起见)

     .ajax().always(function(a, textStatus, b){});
    

    替换 jQuery 1.8 中已弃用的方法 .complete()。 为响应成功的交易,参数与 .done() 相同(即 a = 数据,b = jqXHR),对于失败的交易,参数与 .fail() 相同(即 a = jqXHR,b = errorThrown)。 这是上述完整回调函数的另一种构造。实现细节请参考 deferred.always()。

        .ajax().done(function(data, textStatus, jqXHR){});
    

    替换 jQuery 1.8 中已弃用的方法 .success()。 这是上述成功回调函数的另一种构造。实现细节参考 deferred.done()。

        .ajax().fail(function(jqXHR, textStatus, errorThrown){});
    

    替换 jQuery 1.8 中已弃用的方法 .error()。 这是上述完整回调函数的另一种构造。实现细节参考 deferred.fail()。

        .ajax().then(function(data, textStatus, jqXHR){}, function(jqXHR, textStatus, errorThrown){});
    

    结合了 .done() 和 .fail() 方法的功能。 实现细节参考 deferred.then()。

        .ajax().pipe(function(data, textStatus, jqXHR){}, function(jqXHR, textStatus, errorThrown){});
    

    结合了 .done() 和 .fail() 方法的功能,允许操作底层的 Promise。 实现细节参考 deferred.pipe()。

    【讨论】:

    • 从另一个网页复制和粘贴不是恕我直言。
    • 上面指定了链接。你能解释一下为什么这没有帮助吗?
    • 因为您提供了大量与所需信息混合的附加上下文,而没有任何解释原因,这会使读者感到困惑。
    • 我认为现有论点列表不需要进一步解释。无论如何,如果我的回答没有提供信息,我看不出这个讨论是如何进行的。万事如意
    • 这很有帮助,因为它直接提供了所要求的信息。但应该注意的是,通常的做法是屏蔽直接来自其他来源的文本。
    【解决方案2】:

    .done().fail() 的参数与$.ajax() 函数对应的success:error: 参数的参数相同,即:

    .done( function(data, textStatus, jqXHR) { ... } );
    

    .fail( function(jqXHR, textStatus, errorThrown) { ... } );
    

    对于打字稿,textStatuserrorThrown 是字符串,jqXHRObjectdata 取决于远程服务器向您发送的内容。

    【讨论】:

    • 还要注意,'this' 将是使用的 jQuery.ajax 对象(不是 resulting jqXHR 对象),而不管调用的 ajax 方法(例如,$.ajax 或 $.getJSON 之类的快捷方法)。
    • 我在 jQuery 的 donefail 方法的文档中找不到这些信息。为什么没有记录参数?
    • @MohammadDehghan 因为你找错地方了——deferred.done(和.fail)方法是通用的。对于 AJAX 特定版本,您需要在此页面上查找 .doneapi.jquery.com/jQuery.ajax
    【解决方案3】:

    传递给done处理程序的三个参数是:

    data, textStatus, jqXHR
    

    您可以在此处阅读更多内容:http://api.jquery.com/jQuery.ajax/

    1. data 是响应消息
    2. textStatusdone 函数中总是会成功
    3. jqXHR 是原始 XMLHttpRequest

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-19
      • 2022-11-02
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      相关资源
      最近更新 更多