【问题标题】:jQuery deferred: why is this failed request resolving?jQuery deferred:为什么这个失败的请求解决了?
【发布时间】:2015-02-08 17:18:33
【问题描述】:

我有两个 AJAX 延迟,当两者都成功时,应该会产生成功消息。否则,如果其中一个失败,则应显示错误消息。精简代码:

var reqs = $.map(['file', 'db'], function(mode) {
    $.get(wspath(desyn.repo_id, 'revert', { mode: mode, path: path, version: ver }))
});

$.when(reqs[0], reqs[1]).then(
    function() { alert('success'); },
    function() { alert('error'); }
);

出于调试目的,我强制第一个请求失败 - 在服务器上我抛出内部 500 错误。这在网络控制台中得到证实。但是,成功回调仍然执行,而不是失败回调。

据我了解(如 jQuery docs page 的最后一个示例中所述),将两个函数传递给 then() 意味着第一个是成功回调,后者是失败回调。怎么了?

【问题讨论】:

    标签: jquery ajax callback jquery-deferred


    【解决方案1】:

    您应该使用return $.get(... 来实际在数组中包含延迟对象

    【讨论】:

    • 天哪……我真的这样做了吗?掌心 x 1,000,000。感谢您指出我的注意力不足。
    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 2021-02-25
    • 2018-03-02
    • 2021-11-18
    • 1970-01-01
    • 2012-08-13
    • 2014-08-22
    • 1970-01-01
    相关资源
    最近更新 更多