jquery ajax从另一个域获取XML

时间:2012-10-11 18:45:31

标签: ajax jquery get vimeo

嘿,这里是我的代码,我必须从Vimeo网站上读取XML文件:

$(document).ready(function(){
  $.ajax({
    type: "GET",
    url: "http://vimeo.com/api/v2/video/51229736.xml",
    dataType: "xml",
    success: function(xml) {
        $(xml).find('video').each(function(){
            var thumbURL = $(this).attr('thumbnail_small');
            alert(thumbURL);
            $('#vidThumb').html('<img src="' + thumbURL + '">');
        });
    },
    error: function(err) {alert('err');}
  });
});

XML看起来像这样:

<videos>
  <script/>
    <video>
       <id>51229736</id>
       <title>CHATT HISTORY CENTER FILMS CAVALIER</title>
       <description/>
       <url>http://vimeo.com/51229736</url>
       <upload_date>2012-10-11 13:08:51</upload_date>
<thumbnail_small>http://b.vimeocdn.com/ts/353/072/353072229_100.jpg</thumbnail_small>
<thumbnail_medium>http://b.vimeocdn.com/ts/353/072/353072229_200.jpg</thumbnail_medium>
......
</video>
</videos>

问题是它出错了。我确定它是因为不同的域名试图阅读它所以我怎么能解决这个问题呢?

3 个答案:

答案 0 :(得分:1)

我认为答案是将回调设置为“?”至少它通常适合我。这至少适用于JSON。如果它是JSON,我就是这样做的:

var query = 'http://vimeo.com/api/v2/video/51229736.xml&callback=?';
$.ajax({
    url: query,
    type: 'GET',
    dataType: 'json',
    success: function(s) { 
       console.log('success' + s)
    },
    error: function(e) { console.log('something went wrong!', e)}
});

答案 1 :(得分:1)

你不能通过使用XML在不同域中使用jQuery的ajax来实现这一点,你可以使用callback=?来获取jsonp响应,就像在另一个答案中一样,如果有可能从该url获得json响应

从服务器端获取XML响应应该没有问题,您应该尝试使用该路由

答案 2 :(得分:1)

通过执行以下操作实现:

 var vimeoVideoID = '51229736';
    $.getJSON('http://www.vimeo.com/api/v2/video/' + vimeoVideoID + '.json?callback=?', {format: "json"}, function(json) {
    $("#vidThumb").attr('src', json[0].thumbnail_small);
 });