延迟失败的回调未调用

时间:2011-09-02 03:45:43

标签: jquery jquery-deferred jquery-callback

我试图弄清楚为什么失败的回调不适用于此延期

http://jsfiddle.net/austinbv/wzve6/6/

get_each_total = function(callback) {
    var requests;
    requests = [];
    var url;
    url = "http://otter.topsy.com/search.js?callback=?&apikey=38A260E9D12A4908B1AF9184B691131&q=justin+bieber&window=d";
    requests.push($.getJSON(url, function(data) {}));
    $.when.apply($, requests).then(function() {
        callback();
    }, function() {
        alert("There was an error communicating with a remote library, try again in a few");
    });
};

get_each_total_broken = function(callback) {
    var requests;
    requests = [];
    var url;
    url = "http://otter.topsy.com/hjhkl/sehjkhhkjhkarch.js?callback=?&apikey=38A260E9D12A4908B1AF9184B691131&q=justin+bieber&window=d";
    requests.push($.getJSON(url));
    $.when.apply($, requests).then(function() {
        callback();
    }, function() {
        callback();
    });
};

$(function() {
    get_each_total_broken(function() {
        alert("fail");
    });
});

我有一个类似的问题Jquery deferred call back oddness,但我认为这是不同的,应该有自己的问题。再次感谢任何帮助

修改

在jQuery irc谈论之后,它看起来像是一个bug!

1 个答案:

答案 0 :(得分:1)

我在另一个question中发了评论,但问题是你的网址:它有两个?而且不应该

url = "http://otter.topsy.com/hjhkl/sehjkhhkjhkarch.js?callback=?&apikey=38A260E9D12A4908B1AF9184B691131&q=justin+bieber&window=d";

应该是

url = "http://otter.topsy.com/hjhkl/sehjkhhkjhkarch.js?callback=somevalue&apikey=38A260E9D12A4908B1AF9184B691131&q=justin+bieber&window=d";

甚至:

url = "http://otter.topsy.com/hjhkl/sehjkhhkjhkarch.js"
$.getJSON(url, {
    "callback": "somevalue",
    "apikey": "38A260E9D12A4908B1AF9184B691131",
    "q": "justin bieber",
    "window": "d"
}, function(data){ alert("Got: " + data);});

您可以将?的网址编码为%3F或使用第二个版本,jQuery将为您进行网址编码。

更新: - 所以我在一个返回普通500内部服务器错误的视图上测试了这个。它工作正常:错误回调运行良好。

您的网址会返回500和自定义500错误页面。无论如何要关掉这个并再试一次?