我正在使用 Sammy 和 Knockout 构建一个 SPA,该 SPA 由不同 URL 上可用的 REST Web 服务提供支持。
我注意到在使用返回 JSONP 与 JSON 时出现了一些奇怪的行为$.when().done()
......
.done()
永远不会触发,但.fail()
会触发,即使我收到的状态码是 200,并且 JSONP Linter 告诉我我的 JSONP 是有效的:
(function($) {
$(function() {
$.when($.getJSON('endpoint1?callback=?', null),
$,getJSON('endpoint2?callback=?', null))
.done(function(resp1, resp2) {
console.log(resp1); // this is never called
});
})
.fail(function(obj) {
console.log(obj); // this is called, but why?
});
});
})(jQuery);
返回的示例响应是:
callback({
"external-links": [
{
"nav_link_text": "Stack Overflow",
"url": "http://stackoverflow.com"
}
]
});
如果我返回 JSON 而不是 JSONP,则按.done()
预期工作。我做错了什么或需要改变?