我正试图在一个函数中根据电影的标题从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 />');
}
});
}
答案 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);
}
});
}
答案 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');
});
}
您可以接收并列出数据。