向jQuery搜索脚本添加无结果消息

时间:2012-01-29 11:30:03

标签: javascript jquery html search

我有一个基于Bing API的jQuery搜索脚本。当用户搜索并且他们的查询结果时,他们显示没有问题。但是,当他们的搜索没有结果时,页面就是空白。

如何在“未找到结果”中添加消息。什么时候没有结果可以防止出现空白页?

我目前的代码是:

$(document).ready(function(){
    function search(){
        $.ajax({
            type:"GET",
            url:"http://api.bing.net/json.aspx?AppId=AppIdHere&Query=SearchTermsHere&Sources=Web&Adult=Strict&Web.Count=10&JsonType=callback&JsonCallback=?",
            dataType:"jsonp",
            success:function(query){
                $("#results").html(results(query));
            }
        });
    }
    function results(response){
        var output=[];
        $.each(response.SearchResponse.Web.Results,function(i,result){
            output.push('<a href="'+result.Url+'" class="result"><div class="title">'+result.Title+'</div><div class="url">'+result.DisplayUrl+'</div><div class="desc">'+result.Description+'</div></a>');
        });
        return output.join('');
    }
    search();
});

2 个答案:

答案 0 :(得分:0)

success:function(query){
   if(query != null)
       $("#results").html(results(query));
   else
       $("#results").html('<p>No results found</p>');
}

答案 1 :(得分:0)

将结果函数的返回行更改为:

return (output.length == 0 ? 'No results found.' : output.join(''));

=== UPDATE ===

如果您有javascript错误,请将结果函数更改为:

function results(response){
    if (typeof response.SearchResponse.Web.Results == 'undefined') {
        return 'No results found.';
    }
    var output=[];
    $.each(response.SearchResponse.Web.Results,function(i,result){
        output.push('<a href="'+result.Url+'" class="result"><div class="title">'+result.Title+'</div><div class="url">'+result.DisplayUrl+'</div><div class="desc">'+result.Description+'</div></a>');
    });
    return output.join('');
}

或者您必须添加错误处理程序:

    $.ajax({
        ...,
        error:function(){
            $("#results").html('No results found.');
        }
    });