我正在使用Twitter頭像API在客戶端獲取用戶的頭像網址,我想緩存響應,但不是常規的JSON(或者其他任何類型),他們只是發出302重定向。閱讀圖像的絕對重定向SRC屬性URL
這不起作用(因爲它是跨域):
jQuery.getJSON('https://api.twitter.com/1/users/profile_image/60173.json',
function(data, status, jqxhr){
console.log("data: ", data);
console.log("status: ", status);
console.log("jqxhr: ", jqxhr);
console.log(jqxhr.getResponseHeader('Location'));
console.log(jqxhr.getAllResponseHeaders());
})
數據是空的,狀態是 '成功',jqhxr返回jqxhr對象,但getResponseHeader()和getResponseHeaders()爲null因爲它是跨域調用而不是真正的XMLHTTP調用。
所以我想我可以使用load()事件來顯示302發生後的圖像的實際url。我試過這個:
function avatar_loaded(img) {
console.log("We loaded an avatar for %s (img)[0].src is %o
attr('src') is %o getAttribute('src') is %o", img, jQuery(img)[0].src, jQuery(img).attr('src'), img.getAttribute("src"));
}
var avatar_url = "https://api.twitter.com/1/users/profile_image/60173";
jQuery('body').append("<img onload='avatar_loaded(this)' src='" +
avatar_url + "' width='0' height='0'>");
你會看到avatar_loaded函數被調用兩次。一旦與初始img src(https://api.twitter.com/1/users/profile_image/60173),然後再次,大概與302ed實際圖像url http://a1.twimg.com/profile_images/1272489576/Photo_38_normal.jpg
但我無法讀取重定向的絕對無論我嘗試什麼URL。任何其他想法?
編輯:我不希望這變成一個時間片,所以我只是用
http://api.twitter.com/1/users/show.json?user_id=
API調用。我曾想象過這需要一個經過認證的受保護用戶的通話,但並不是這樣可以使用。
它被調用兩次,但具有相同的src:http://jsfiddle.net/ionutzp/6Ekub/ – 2011-03-24 16:00:43