2012-04-10 63 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