Почему этот вызов JQuery Ajax не работает? - PullRequest
0 голосов
/ 17 февраля 2011
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript" language="javascript">
$.ajax({
    type: "GET",
    cache: false,
    url: 'http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=school',
    contentType: "application/json; charset=utf-8",
    success: function(msg) {
    alert(""+msg.length);
  },
  error: function (e) {
            alert("Failed to Get declassification details");
        }});
</script>
</body>
</html>

Я не могу понять, что не так с этим вызовом AJAX. WENT Через несколько SIMILAR вопросов на этом форуме, но ни один не работал для меня.
Я должен получить набор результатов из Googleпоиск в формате JSON.

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Вы должны использовать dataType вместо «contentType».Вот код:

$.ajax({
    type: "GET",
    cache: false,
    url: 'http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=school',
    dataType: "jsonp",
    success: function(msg) {
        alert("" + msg.responseData.results.length);
    },
    error: function(e) {
        alert("Failed to Get declassification details");
    }
});

Здесь работает пример .

Из документации:

contentTypeString При отправке данных на сервер,используйте этот тип контента.

dataTypeString Тип данных, которые вы ожидаете от сервера.

1 голос
/ 17 февраля 2011

Браузер отбрасывает запрос из-за междоменной политики безопасности.Попробуйте использовать JSONP (dataType: "jsonp").Запросы Ajax к сторонним веб-сайтам обычно невозможны из-за ограничений безопасности.Но есть несколько методов на стороне клиента, чтобы обойти эти ограничения, и одним из них является JSONP.Одна вещь, которую вы не получите от JSONP, - это уведомление о сетевых ошибках или о чем-либо, что хорошо реагирует на плохо сформированные ответы, поэтому вы должны принять это как компромисс с возможностью вызывать сервисы в других доменах.

Почему икак работает JSONP:

  1. Браузеры позволяют иметь элемент скрипта для получения его источника из другого домена.
  2. Запрошенная страница настроена, оберните ответ JSON в вызове функции, еслиимя функции указывается в параметре (обычно называемом «обратным вызовом») в URL.
  3. Когда dataType равен «jsonp», JQuery создает функцию обертывания, добавляет параметр обратного вызова в URL и вставляеттег script в DOM, указывающий на запрошенный вами URL.
  4. Браузер загружает ответ как скрипт и выполняет его, вызывая, таким образом, предоставляемую JQuery функцию.

См. разницу вответ: http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=school

против

http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=school&callback=jquery_created_function

...