【问题标题】:getJSON won't load in IE (any version)getJSON 不会在 IE 中加载(任何版本)
【发布时间】:2014-03-27 22:58:42
【问题描述】:

我正在使用 $.getJSON 从 Vimeo 加载视频库,它在所有浏览器中都可以正常工作,除了任何版本的 IE。我无法弄清楚我做错了什么。

这是运行 getJSON 的 .js 文件:

console.log('file load');

var jsonURL = 'http://vimeo.com/api/v2/album/1822727/videos.json';

$.getJSON(jsonURL, function(data){
  $.each(data, function (index, value) {
    var videoID = value.id;
    var videoThm = value.thumbnail_large;
    $('#galThms').prepend('<li id="thm' + videoID + '" style="background-image:url(' + videoThm + ');"><a title="' + videoID + '" href="#playVideo"></a></li>');
    console.log('json success');
    });
    $(function() {
      $('.galleryThms a').click(function() {
        $('#loadVideo').slideDown();
        $('.galleryThms a').html('');
        $(this).html('<div class="currentOverlay"><ul><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul></div>');
        $('<div class="watchedVideo"></div>').appendTo($(this).parent());
        $('.galleryThms a').css('background-image', 'url(/images/gallery-play-button.png)');
        $(this).css('background-image', 'none');

        //Embed Video
        var vimeoEmbedID = $(this).attr( "title" );
        $('#loadVideo').html('<iframe src="//player.vimeo.com/video/' + vimeoEmbedID + '?title=0&amp;byline=0&amp;portrait=0&amp;color=57bec7&amp;autoplay=1" width="1920" height="1080" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>');

     });

  });
 });

可以在此处找到实时示例:http://wavesmediagroup.com/weddings/portfolio/

【问题讨论】:

  • 尝试使用$.ajax 并传入一个错误处理程序,这样您就可以知道发生了什么。这就是我不使用$.getJSON 的原因之一。另外,试试更高版本的 jQuery 1.1 真的太老了。
  • 我有 jquery 1.11。只是尝试升级到 v2 看看是否有帮助。不再需要 IE8,所以无论如何是时候了。如果我使用 ajax,我可以只替换 getJSON 还是整个语法也会改变?抱歉,JavaScript 领域的新手。

标签: javascript jquery getjson vimeo vimeo-api


【解决方案1】:

这是一个跨域问题。这里的这篇文章http://e-mats.org/2010/01/jquery-getjson-and-the-same-origin-policy,详细解释一下,你只需添加:

?callback=?

...在您的跨域 JSON 文件的末尾,jquery 处理其余部分。所以我的网址现在看起来像:

http://vimeo.com/api/v2/album/1822727/videos.json?callback=?

...而且效果很好!

【讨论】:

  • 我认为如果你使用更高版本的jQuery,它会检测跨域并自动使用jsonp
  • 我一直在使用最新的 2.x 版本。
猜你喜欢
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 2011-07-27
  • 2012-06-16
  • 2017-10-19
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多