Javascript 谷歌搜索API返回“未定义”
我有一个jQuery脚本,可以查询GoogleAjax搜索API并返回结果。然而,目前所有结果都是未定义的 我怎样才能解决这个问题 我的jQuery代码是:Javascript 谷歌搜索API返回“未定义”,javascript,jquery,html,Javascript,Jquery,Html,我有一个jQuery脚本,可以查询GoogleAjax搜索API并返回结果。然而,目前所有结果都是未定义的 我怎样才能解决这个问题 我的jQuery代码是: $(document).ready(function(){ var resultsDiv = $('#resultsDiv'); $.getJSON('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&callback=jsonp',
$(document).ready(function(){
var resultsDiv = $('#resultsDiv');
$.getJSON('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&callback=jsonp',{q:"google",rsz:8,start:0},function(r){
var results = r.responseData.results;
var pageContainer = $('<div>',{className:'pageContainer'});
for(var i=0;i<results.length;i++){
pageContainer.append('<div class="webResult"><h2><a href="'+r.responseData.results.unescapedUrl+'" target="_blank">'+r.title+'</a></h2><p>'+r.responseData.results.content+'</p><a href="'+r.responseData.results.unescapedUrl+'" target="_blank">'+r.responseData.results.visibleUrl+'</a></div>');
}
resultsDiv.empty();
pageContainer.append('<div class="clear"></div>').hide().appendTo(resultsDiv).fadeIn('slow');
});
});
您需要使用jsonp,因为它将返回jsonp响应
$.ajax({
type: "GET",
url: "http://ajax.googleapis.com/ajax/services/search/web?v=1.0",
data: {q:"google",rsz:8,start:0},
dataType: 'jsonp', //<---
success: function(r){
var results = r.responseData.results;
var pageContainer = $('<div>',{className:'pageContainer'});
for(var i=0;i<results.length;i++){
pageContainer.append('<div class="webResult"><h2><a href="'+r.responseData.results.unescapedUrl+'" target="_blank">'+r.title+'</a></h2><p>'+r.responseData.results.content+'</p><a href="'+r.responseData.results.unescapedUrl+'" target="_blank">'+r.responseData.results.visibleUrl+'</a></div>');
}
resultsDiv.empty();
pageContainer.append('<div class="clear"></div>').hide().appendTo(resultsDiv).fadeIn('slow');
}
});
编辑:
这就是为什么它显示未定义。。您正在正确获取数据
pageContainer.append('<div class="webResult"><h2><a href="'+r.responseData.results.unescapedUrl+'" target="_blank">'+r.title+'</a></h2><p>'+r.responseData.results.content+'</p><a href="'+r.responseData.results.unescapedUrl+'" target="_blank">'+r.responseData.results.visibleUrl+'</a></div>');
应该是
pageContainer.append('<div class="webResult"><h2><a href="'+r.responseData.results[i].unescapedUrl+'" target="_blank">'+r.responseData.results[i].title+'</a></h2><p>'+r.responseData.results[i].content+'</p><a href="'+r.responseData.results[i].unescapedUrl+'" target="_blank">'+r.responseData.results[i].visibleUrl+'</a></div>');
Ajax请求的结果是:jsonp{responseData:…}; 非{响应数据:…} 在调用“success”回调时计算此代码。 我认为您所要做的就是定义一个名为jsonp的新函数,如下所示:
function jsonp(r){
var results = r.responseData.results;
....
}
不应该是回调=?您需要使用jsonp您使用的是chrome吗?如果是这样,请展开错误以查明原因请参阅我的更新答案。。您错误地从jsonp响应中获取数据