用jquery调用“imdbapi.com”

时间:2011-06-07 13:50:33

标签: jquery ajax

我正试图在一个函数中根据电影的标题从IMDB获取电影海报。

我试过了:

function getPoster(title)
{
    $.ajax({
      url: "http://www.imdbapi.com/?t=" + title,
      datatype: "json",
      success: return data
    });
}

但我真的不知道如何“返回”我从.ajax()...

获得的数据

编辑IMDBapi返回一个json数据集,如:

{"Title":"Jurassic Park","Year":"1993","Rated":"PG-13","Released":"11 Jun 1993","Genre":"Action, Adventure, Family, Sci-Fi","Director":"Steven Spielberg","Writer":"Michael Crichton, Michael Crichton","Actors":"Sam Neill, Laura Dern, Jeff Goldblum, Richard Attenborough","Plot":"During a preview tour, a theme park suffers a major power breakdown that allows its cloned dinosaur exhibits to run amok.","Poster":"http://ia.media-imdb.com/images/M/MV5BMTc2NDIxNTQyNF5BMl5BanBnXkFtZTcwNzIwMzM3MQ@@._V1._SX320.jpg","Runtime":"2 hrs 7 mins","Rating":"7.9","Votes":"159458","ID":"tt0107290","Response":"True"}

edit2: 这很有效:

for(var i in titles)
{
    $.ajax({
      url: "http://www.imdbapi.com/?t=" + titles[i],
      dataType: 'jsonp',
      success: function(data) {
        $('body').append(data.Poster+'<br />');
      }
    });
}

4 个答案:

答案 0 :(得分:3)

你不能。

AJAX 异步;您只能在函数返回后从服务器获得回复。

相反,您可以让您的函数接受回调,就像$.ajax那样。

答案 1 :(得分:2)

你可以这样做:

function getPoster(title)
{
    $.ajax({
      url: "http://www.imdbapi.com/?t=" + title,
      datatype: "jsonp",
        success: function(data){
            console.log(data);  
            do_some_function(data);
        }
    });

}

演示:http://jsfiddle.net/xVAbm/2/

答案 2 :(得分:1)

success: function(data){
  // do what you want with the data here..
  alert(data.Title);
}

为避免跨域限制(因为API似乎支持),请使用

function getPoster(title)
{
    $.getJSON('http://www.imdbapi.com/?t=' + title + '&callback=?' ,
      function(data){alert(data.Title);}
    );
}

答案 3 :(得分:0)

试试这个:

function getPoster(title){

$.getJSON('http://www.imdbapi.com/?t=' + title, function(data) {
  var items = [];

    $.each(data, function(key, val) {

    items.push('<li id="' + key + '">' + val + '</li>');

    });

    $('<ul/>', {

        'class': 'my-new-list',
        html: items.join('')
       }).appendTo('body');

    });
}

您可以接收并列出数据。