我目前正在使用OMDb API并设法从中获取一些数据。现在我正在通过标题和发行年份搜索电影数据库,并且能够让演员进入一个"块"。
以下是我面临的两个问题:
我的 JavaScript :
$(function(){
var $Search = $('form'), $Results = $('#results');
$Results.hide();
$Search.on('submit', function(p_oEvent){
var sUrl, sMovie, sYear, oData;
p_oEvent.preventDefault();
sMovie = $Search.find('#title').val();
sYear = $Search.find('#year').val();
sUrl = encodeURI('http://www.omdbapi.com/?t=' + sMovie + '&y=' + sYear + '');
$.ajax(sUrl, {
complete: function(p_oXHR, p_sStatus){
oData = $.parseJSON(p_oXHR.responseText);
console.log(oData);
$Results.find('.actors').text(oData.Actors);
$Results.show();
}
});
});
});
我的 HTML 所有内容都已打印出来:
<div id="browse">
<h1>Search for a TV-Series</h1>
<form>
<label>
<input id="title" type="text" name="series" placeholder="Name of the Series" />
<input id="year" type="text" name="year" placeholder="Year" />
</label>
<button>Go!</button>
</form>
</div>
<div id="results">
<table>
<tr class="heading">
<th>Actors</th>
</tr>
<tr>
<td class="actors"></td>
</tr>
</table>
</div>
欢迎任何帮助和建议!
答案 0 :(得分:2)
要在自己的行上显示每个actor,您需要split
API返回的逗号分隔的actor字符串,遍历列表,并将每个actor附加到页面。这是一个jsfiddle。
<强> HTML 强>
<div id="browse">
<h1>Search for a TV-Series</h1>
<form>
<label>
<input id="title" type="text" name="series" placeholder="Name of the Series" />
<input id="year" type="text" name="year" placeholder="Year" />
</label>
<button>Go!</button>
</form>
</div>
<div id="results">
<table></table>
</div>
<强>的JavaScript 强>
$(function(){
var $Search = $('form'), $Table = $('table');
$Table.hide();
$Search.on('submit', function(p_oEvent){
var actors = [], sUrl, sMovie, sYear, oData;
p_oEvent.preventDefault();
sMovie = $Search.find('#title').val();
sYear = $Search.find('#year').val();
sUrl = encodeURI('https://www.omdbapi.com/?t=' + sMovie + '&y=' + sYear + '');
$.ajax(sUrl, {
complete: function(p_oXHR, p_sStatus){
oData = $.parseJSON(p_oXHR.responseText);
actors = oData.Actors.split(',');
$Table.html(
'<tr class="heading"><th>Actors</th></tr>'
);
actors.forEach(function(actor) {
$Table.append(
'<tr><td class="actors">' + actor + '</td</tr>'
);
});
$Table.show();
}
});
});
});
要回答您的第二个问题,是的,可以按季节和电视剧搜索。以下是一个例子。
http://www.omdbapi.com/?t=Game%20of%20Thrones&Season=2&Episode=1&type=series
此API调用的问题是您必须按Episode
搜索,我想您可能想知道整个季节中的每个角色。为此,您必须在没有Episode
参数的情况下进行API调用,然后使用返回的id来检索每一集。
答案 1 :(得分:0)
正如评论中提到的@Jamesking56,您只需要从响应中迭代演员,并为每个演员创建新的表行。但是,从我看到的,演员返回一个字符串。因此,你需要通过&#34;,&#34;来分割演员。分隔符,并遍历生成的数组。请参阅JS String split()和JS Array forEach()。
您可以在OMDb API Changelog中看到可以搜索特定的季节和剧集:
5/10/15季节+剧集搜索参数已添加:http://www.omdbapi.com/?t=Game of Thrones&Season=1&Episode=1
所以请按照您的意愿使用它。我不知道是否可以将搜索仅限于电视剧,但是&#34;季节&#34;绝对不会用于电影,所以你应该只使用该查询获得系列。