2012-04-10 59 views
0

爲什麼不在IE中調用回調函數?

  1. 呼叫到Flickr:

    $.getJSON("http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos", 
    { 
        api_key: APIKey,  
        photoset_id: photoSetID, 
        format: "json", 
        per_page: 40, 
        nojsoncallback: 1   
    }, displayImages); 
    
    function displayImages(data) { alert('called'); } 
    
  2. 呼叫到YouTube:

    $.getJSON('https://gdata.youtube.com/feeds/api/users/username/favorites?alt=json', function(data) 
    { 
        alert('called'); 
    }) 
    

這兩種類型的呼叫的工作對任何其他瀏覽器,除了IE瀏覽器。 你能解釋我爲什麼嗎?

回答

1

jQuery僅支持非IE瀏覽器中的跨域AJAX < = 9個瀏覽器。要在IE中使用這些API,您需要使用JSONp(如果可用)或添加支持IE使用的XDomainRequest API的jQuery plugin

如果可能的話使用JSONp; XDR有一些限制 - 詳情請參閱http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

+0

哦,謝謝你,我不知道。只需添加插件即可解決Flickr問題。 YouTube還沒有,但我認爲它是可以修復的。再次感謝你! – 2012-04-10 17:20:34

+0

還使用callback =?解決了YouTube問題:) – 2012-04-10 17:31:21