Javascript 谷歌搜索API返回“未定义”

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',

我有一个jQuery脚本,可以查询GoogleAjax搜索API并返回结果。然而,目前所有结果都是未定义的

我怎样才能解决这个问题

我的jQuery代码是:

$(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响应中获取数据