Подтвердить что ты не робот

JQuery не получит json?

Итак, я пытаюсь выполнить простую задачу получения json-данных из Google, но этот маленький код jquery не будет запущен. Пожалуйста, помогите мне выяснить, почему?

  <script src="http://code.jquery.com/jquery-latest.js"></script>

  <script>
  $(document).ready(function(){
    $.getJSON("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false", function(jsondata) {
            alert(jsondata.status);
    });
  });
  </script>

Лучшее решение: добавить "& callback =?" до конца URL-адреса. Большое вам спасибо за вашу помощь!

4b9b3361

Ответ 1

Его называют Одинаковая политика происхождения. Короче: домен, в котором находится ваш код, является единственным доменом, с которым ваш javascript может взаимодействовать (по умолчанию)

Вы получите сообщение об ошибке:

XMLHttpRequest cannot load http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false. Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin.

Ответ 2

Yup, это абсолютно ошибка с тем же исходным кодом.

Кажется, что последняя версия API Карт Google (v3) не поддерживает jsonp. В результате, если вы хотите геокодировать, вам понадобятся карты api:

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>

<script>
    $(document).ready(function(){
        var loc = "1600 Amphitheatre Parkway, Mountain View, CA";
        var geocoder = new google.maps.Geocoder();
        geocoder.geocode( {'address': loc },
            function(data, status) { console.log(data); });
    });
</script>

Другие альтернативы:

  • Используйте услугу "proxy", как указано ctcherry, чтобы получить данные для вас.
  • Используйте старый V2 API с JSONP, но вам понадобится ключ API Карт.

Ответ 4

У меня была такая же проблема. Попытка получить json с сервера, к которому я не имел доступа (= > нет JSONP).

Я нашел http://benalman.com/projects/php-simple-proxy/ Добавьте php-прокси на ваш сервер и выполните вызов ajax в этот файл.

$.ajax({
   type: 'GET',
   url:'proxy.php?url=http://anyDomain.com?someid=thispage',
   dataType: "json",
   success: function(data){
      // success_fn(data);
   },
   error: function(jqXHR, textStatus, errorThrown) {
      // error_fn(jqXHR, textStatus, errorThrown);
   }
});

где proxy.php(файл от Ben Alman) размещен в вашем домене


Альтернатива (которая, как мне показалось, лучше всего подходит для этого): http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

Ответ 5

Убедитесь, что это не междоменная проблема. Я думаю, для jQuery, чтобы иметь возможность звонить другим URL-адресам домена, вам нужно указать URL-адрес в каком-то специальном формате. Я точно не помню, но, может быть, "?" (вопросительный знак), добавленный в конце URL?