omdb api没有结果

时间:2017-05-09 19:59:10

标签: javascript jquery

我在家中使用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();
        }
    });    
});

1 个答案:

答案 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的方法。