我试图弄清楚为什么失败的回调不适用于此延期
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!
答案 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错误页面。无论如何要关掉这个并再试一次?