Вызов Google Ajax Search API через JQuery JSONP - PullRequest
4 голосов
/ 17 марта 2012

Я знаю, что об этом спрашивали миллион раз, но я все еще не могу заставить мой код работать.Я пытаюсь сделать простой вызов JSONP из моего приложения Javascript.Фрагмент трески выглядит так:

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: Извините, этот код на самом деле работает, по крайней мере, первый подход.Вокруг этого фрагмента кода была небольшая ошибка, в результате которой код не работал, но в целом это работает просто отлично.Асинхронные вызовы иногда немного сложны: -)

Ответы [ 2 ]

5 голосов
/ 17 марта 2012

Проверьте это 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");
          }
        });
      });

вам нужно написать параметр обратного вызова и функцию обратного вызова, gis 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 голосов
/ 17 марта 2012

Похоже, что используемый вами метод устарел: https://developers.google.com/web-search/docs/reference

и перешел к: http://code.google.com/apis/customsearch/v1/overview.html

...