我有一个搜索建议脚本,它从两个 Google API 中提取结果,按整数值对结果进行排序,然后将其显示给用户。
但是,当前脚本似乎不会从第二个 API 返回结果,直到用户按下 enter 或 return。为什么会这样?
JSFiddle:http: //jsfiddle.net/m8Kfx/
我的代码是:
var combined = [];
$(document).ready(function(){
$("#search").keyup(function(){
$("#suggest").html("");
$.getJSON("http://suggestqueries.google.com/complete/search?q="+$("#search").val()+"&client=chrome&callback=?",function(data){
for(var key in data[1]){
if(data[4]["google:suggesttype"][key]=="NAVIGATION"){
combined.push("<li rel='"+data[4]["google:suggestrelevance"][key]+"'><a href='"+data[1][key]+"'>"+data[2][key]+"</a></li>");
}else{
combined.push("<li rel='"+data[4]["google:suggestrelevance"][key]+"'>"+data[1][key]+"</li>");
}
}
});
$.getJSON("https://www.googleapis.com/freebase/v1/search?query="+$("#search").val()+"&limit=3&encode=html&callback=?",function(data){
for(var key in data.result){
combined.push("<li rel='"+Math.round(data.result[key].score*5)+"'> Freebase: "+data.result[key].name+"</li>");
}
});
combined.sort(function(a,b){
return +$(b).attr("rel") - +$(a).attr("rel");
});
$("#suggest").html(combined.slice(0, 5).join(""));
combined = [];
});
});