有时,对 Flickr 的 api 的 ajax 请求会失败。我不确定我是否在这里做错了什么 - 或者我只是没有正确处理事情 - 但代码在 90% 的时间里都能正常工作。当它不起作用时,我会从 Firefox 的控制台收到以下错误消息:
TypeError: jQuery19109306644694293944_1362865216185 is not a function
(我让 jquery 生成回调,这就是回调被这样命名的原因。)
这是有时会失败的代码:
function getAppropriateSize(photo){
console.log("In getAppropriateSize");
/** stuff. query is defined here **/
$.ajax({
url: 'http://api.flickr.com/services/rest/?method=flickr.photos.getSizes&format=json&api_key='+flickrKey+'&photo_id='+query.id,
dataType:'jsonp',
jsonp:'jsoncallback',
timeout:3000,
success: function(sizes){
console.log("In success - getAppropriateSize");
/**determine the correct size**/
flickrURL = sizes.sizes.size[currVal].source;
},
error: function(xmlhttprequest,textstatus,msg){
console.log("In error - getAppropriateSize");
/* handle error*/
}
});
}
我检查了发生这种情况时返回的内容,JSLint 说它是有效的 javascript。flickrURL 也被设置为有效的 URL。我对导致此错误的原因感到非常困惑 - 任何帮助将不胜感激。
编辑:我在胡闹,这次 getAppropriateSize 刚刚收到来自 flickr 的两条单独消息,用于一次通话。第一个是
({stat:"fail", code:1, message:"Photo not found"})
第二个是来自服务器的完整响应,它也产生了上面提到的 TypeError。然而,第二个回复找到了照片并给了我尺寸。