jQuery: использование $ .getJSON для получения локализации от aprs.fi - PullRequest
0 голосов
/ 30 октября 2011

Я хочу использовать JSON для получения координат локализации от http://aprs.fi/page/api. Я нашел пример в http://api.jquery.com/jQuery.getJSON:

<script>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
  {
    tags: "cat",
    tagmode: "any",
    format: "json"
  },
  function(data) {
    $.each(data.items, function(i,item){
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if ( i == 3 ) return false;
    });
  });
</script>

Когда $ .getJSON завершился успешно, он запускает функцию (данные) и размещает 4 изображения на веб-сайте. Я вставил этот код в мой HTML-файл, и он работает, поэтому я изменил его, чтобы получить данные JSON от aprs.fi:

<script>    
$.getJSON("http://api.aprs.fi/api/get?name=OH7RDA&what=loc&apikey=_key_&format=json",   
    function(data) 
    {
        alert("Anything");
    });
};
</script>

Может быть, мой запрос неправильный, но даже «Ничего» не печатается на моем экране. Я понятия не имею, как изменить это, чтобы заставить это работать.

Ответы [ 2 ]

1 голос
/ 30 октября 2011

То, что сервис может возвращать результаты в формате JSON, не означает, что вы можете получить к нему доступ через JSONP.Сайт должен явно распознавать такой запрос, чтобы ответ работал как ответ JSONP.(То есть ответ должен принимать форму вызова функции, когда возвращаемые данные JSON передаются в качестве аргумента функции.)

0 голосов
/ 31 октября 2011

XHR, которые использует getJSON, подчиняются политике того же источника в веб-браузерах;вы можете указывать XHR только на тот же сервер, порт, комбинацию протокола, что и на веб-странице, на которой они используются. Если ваша веб-страница работает на http://example.org:5625, она может только направлять запросы XHR на http://example.org:5625/some-path-here.

Обходной путь называется JSONP, где ресурс загружается как тег.Однако соответствующая служба должна знать об этом.Вы можете сказать, так ли это, потому что после добавления параметра обратного вызова он должен показать что-то вроде

callbackname({"the": "respose", "goes": "here"});

, то есть вызов функции к названному обратному вызову.Однако, если я правильно понял, используемый вами сервис не поддерживает JSONP.Тогда единственный вариант - создать серверный скрипт, который будет работать как прокси.

...