我在家中使用omdb api作为项目,如果我搜索没有结果的电影,它仍会显示我之前成功搜索的详细信息(标题,年份,情节等)和损坏的图像。< / p>
如果找不到电影,我试图阻止它显示任何内容。这可能吗?
我对Javascript和Json的知识非常有限,但是我已经尝试了很多东西,并且无法解决问题。任何帮助都将非常感激。
这是我的代码之前,我搞砸了尝试的事情:
var $Form = $('#omdbform'), $Container = $('#containera');
$Container.hide();
$Form.on('click', function(p_oEvent){
var sUrl, sMovie, oData;
p_oEvent.preventDefault();
sMovie = $Form.find('#moviename').val();
sUrl = 'https://www.omdbapi.com/?t=' + sMovie + ''
$.ajax(sUrl, {
complete: function(p_oXHR, p_sStatus){
oData = $.parseJSON(p_oXHR.responseText);
console.log(oData);
$Container.find('.title').text(oData.Title);
$Container.find('.plot').text(oData.Plot);
$Container.find('.poster').html('<img src="' + oData.Poster + '" alt=""/>');
$Container.find('.year').text(oData.Year);
$Container.find('.rated').text(oData.Rated);
$Container.show();
}
});
});
答案 0 :(得分:2)
在失败的查询中,此API响应如下:
{"Response":"False","Error":"Movie not found!"}
状态代码为200
,因此您应该从响应中检查正文。
编辑:
您可以对响应对象使用hasOwnProperty
方法并检查此对象是否具有title
属性,然后调用Container.show()
,在其他情况下不执行任何操作或显示有关DOM中没有结果的信息。
编辑2:
oData = $.parseJSON(p_oXHR.responseText);
if (oData.hasOwnProperty("Title")) {
$Container.find(".title").text(oData.Title);
$Container.find(".plot").text(oData.Plot);
$Container.find(".poster").html('<img src="' + oData.Poster + '" alt=""/>');
$Container.find(".year").text(oData.Year);
$Container.find(".rated").text(oData.Rated);
} else {
$Container.find(".error").text(oData.Response);
}
$Container.show();
如果您的容器仍然有关于上一个视频的信息,可能您应该使用empty
方法或DOM Removal部分中的其他方法实现清除DOM的方法。