1

我正在尝试通过 oembed API (json) 获取 vimeo 嵌入代码。

它在 safari 中运行良好,但在 Firefox 中,返回的 json 似乎没有被正确解释,因为我得到一个空值而不是 javascript 对象(在成功方法中)。

我会给出一个 jsfiddle 示例的链接,但该示例在那里不起作用,一些关于不允许的来源的错误..

所以这里是代码:

   <script type='text/javascript' src='http://code.jquery.com/jquery-1.4.4.min.js'></script>


  <script type='text/javascript'>
  //<![CDATA[ 
  $(window).load(function(){
  $.ajax({
    url: "http://vimeo.com/api/oembed.json?&format=json&url=http%3A//vimeo.com/2197639",
    dataType: "json",
    success: function(data) {
        $('#output').html(JSON.stringify(data));
    },  
    error: function(errorSender, errorMsg) {
        console.log(errorSender);
        console.log(errorMsg);
        $('#output').html(errorSender + ' ' + errorMsg);
    } 
    });
  });
  //]]> 
  </script>

任何想法可能是错的?它与json有关吗?

示例 json 是:

{"type":"video","version":"1.0","provider_name":"Vimeo","provider_url":"http:\/\/vimeo.com\/","title":"Early Morning Qena","author_name":"Oliver Wilkins","author_url":"http:\/\/vimeo.com\/offshoot","is_plus":"1","html":"<iframe src=\"http:\/\/player.vimeo.com\/video\/2197639\" width=\"1280\" height=\"720\" frameborder=\"0\" webkitAllowFullScreen allowFullScreen><\/iframe>","width":1280,"height":720,"duration":229,"description":"Early morning in Quft, near Qena. Shot with EX1 and Letus Extreme 35mm DOF adaptor.\n\nwww.offshoot.tv\n","thumbnail_url":"http:\/\/b.vimeocdn.com\/ts\/271\/854\/27185484_640.jpg","thumbnail_width":640,"thumbnail_height":360,"video_id":2197639}
4

1 回答 1

3

您需要使用 JSONP,因为您正在尝试执行跨域 AJAX 调用。看起来 vimeo 支持它。您只需要通过修改您的 url 来指定一个回调(注意callback=?我在末尾附加的参数和format=jsonp):

$.ajax({
    url: "http://vimeo.com/api/oembed.json?format=jsonp&url=http%3A%2F%2Fvimeo.com%2F2197639&callback=?",
    dataType: "jsonp",
    success: function(data) {
        $('#output').text(JSON.stringify(data));
    },  
    error: function(errorSender, errorMsg) {
        $('#output').text(errorSender + ' ' + errorMsg);
    }
});

这是一个现场演示

于 2011-09-23T16:05:31.120 回答