【问题标题】:Calling Google Ajax Search API via JQuery JSONP通过 JQuery JSONP 调用 Google Ajax 搜索 API
【发布时间】:2016-02-01 11:39:47
【问题描述】:

我知道这已经被问了无数次,但我仍然无法让我的代码工作。我正在尝试从我的 Javascript 应用程序进行简单的 JSONP 调用。鳕鱼片段如下所示:

url="http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=AAA&callback=?";

然后:

$.getJSON(url, function(data) {
    alert('hello 1');
  });

或:

$.ajax({url: url,
    datatype: 'jsonp',
    success: function(data) { alert("hello 2"); },
    error: function(j, t, e) {  alert(t);}
});

这两种方法都不起作用。第二种方法会导致“错误”警报。第一个也不返回成功。我究竟做错了什么?非常感谢!

更新:我想我至少发现了一个问题。让我更深入地研究一下。

更新 2:抱歉,这段代码确实有效,至少是第一种方法。此代码片段周围存在一个细微错误,导致代码无法正常工作,但总体而言,这工作得很好。异步调用有时有点棘手:-)

【问题讨论】:

    标签: jquery ajax jsonp


    【解决方案1】:

    看看这个JsFIddleDemo

        /*
         * create callbak function for jsonP
         * @params
         * data is response from http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=AAA&callback=myjsonpfunction
         */
          function myjsonpfunction(data){
               alert(data.responseData.results) //showing results data
               $.each(data.responseData.results,function(i,rows){
                  alert(rows.url); //showing  results url
               });
          }
    
        //request data using jsonP
        $(function(){
            $.ajax({
            url:'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=AAA&callback=myjsonpfunction',
            type:"GET",
            dataType: 'jsonp',
            jsonp: 'myjsonpfunction',
            async:'true',
            success:function (data) {
                //alert("success");
              }
            });
          });
    

    你需要写一个回调参数和回调函数,如果你不设置回调,google ajax apis将只返回json。

    如果你这样设置 url

    http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=AAA&callback=?(another)
    

    回应是

    {"responseData": null, "responseDetails": "bad or missing callback or context", "responseStatus": 400}

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 是的,但“贬低”并不意味着“不工作”。如果我直接调用 URL,我会得到结果。
      • @MarkT 是的,但总有一天会停止。而且,callback=? 我得到一个错误。如果callback=? 被删除或被赋予类似callback=foo 的值,它就可以工作。如果您要为该 callback 附加一个值,则它应该包含在问题中。
      • 这不是 JSONP 与 JQuery 的工作方式。 jQuery 替换回调=?带有回调=
      • @MarkT 它似乎没有以JSONP 响应。看起来像直JSON。如果是这种情况,您将遇到同源策略违规。
      猜你喜欢
      • 2012-07-31
      • 2013-06-04
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 2012-03-05
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多