Ajax-запрос работает в сафари, но не в Firefox (Vimeo oembed) - PullRequest
1 голос
/ 23 сентября 2011

Я пытаюсь получить код для вставки vimeo через oembed API (json).

В 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}

1 Ответ

3 голосов
/ 23 сентября 2011

Вам необходимо использовать 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);
    }
});

и вот live demo .

...