Сбой запроса Google Places API jQuery.ajax () с рабочим URL - PullRequest
1 голос
/ 16 августа 2011

Если я вставлю следующий URL во вкладку браузера:

https://maps.googleapis.com/maps/api/place/search/json?location=51.5237587%2C-0.1583642&radius=500&types=bar&key=MY_KEY_HERE&sensor=false

... я получу ожидаемый ответ JSON от API Google Адресов (MY_KEY_HERE, конечно, заменяется фактическим ключом, здесь ив .ajax () ниже).Однако при использовании этой конструкции jQuery.ajax ():

$.ajax({
     type: 'GET',
     url: "https://maps.googleapis.com/maps/api/place/search/json",
     data: {"location" : latlng, "radius" : 500, "types" : "bar", "key" : "MY_KEY_HERE", "sensor" : "false",},
     dataType: "json",
     success: function(data)
     {
       var pubResults = data; 
     },
     error: function(data)
     {
       alert(JSON.stringify(data));
     },
     complete: function(data)
     {
       initialize($.oneapi.latitude, $.oneapi.longitude, pubResults);
     }
   }); 

... тогда блок success не достигается, вместо этого выводится блок error :1011 *

{"readyState":0,"responseText":"","status":0,"statusText":"error"}

Тестирование в Firefox 5.01.Веб-консоль подтверждает, что .ajax () ПОЛУЧАЕТ URL, упомянутый вверху этого вопроса.Любые идеи, почему вызов jQuery по этому URL приведет к ошибке, но тот же URL, вставленный во вкладку браузера, приведет к ожидаемому JSON?

Большое спасибо за ваше время!

1 Ответ

2 голосов
/ 16 августа 2011

Это междоменный запрос.Браузеры по умолчанию блокируют ответы от междоменных сайтов.Вам нужно использовать jsonp в качестве datatyoe.Просто Google тоже самое, и вы можете увидеть, как это можно сделать с помощью jquery API.Переполнение стека также вызывает вопросы.

В соответствии с той же политикой происхождения веб-страница, обслуживаемая сервером server1.example.com, не может нормально подключаться или взаимодействовать с сервером, отличным от server1.example.com.Исключением является элемент HTML.Используя преимущества открытой политики для элементов, некоторые страницы используют их для получения кода Javascript, который работает с динамически генерируемыми данными в формате JSON из других источников.Этот шаблон использования известен как JSONP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...