2015-01-27 5 views
-1

Я начинаю начинать. Нужна помощь с функцией $ .getJSON. Я пытаюсь извлечь данные с внешнего сервера, используя эту функцию, но когда я запускаю ее, я ничего не получаю. Я прошел через бесчисленные учебники. Heres мой пример кода ...

<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
     var url='https://api.flightstats.com/flex/airports/samples/v1/lts/Airport_response.json'; 
     $('#button').click(function(){ 
      $.getJSON(url,function(json){ 
       $("#results").append(json.airport.name); 
      });  
     }); 
    }); 
    </script> 


</head> 
<body> 
    <input type="button" id="button" value="Go"> 
    <div id="results"></div> 

</body> 

и Heres содержание JSON файл ..

{ 
"airport": 
     { 
    "fs":"PDX", 
    "iata":"PDX", 
    "icao":"KPDX", 
    "faa":"PDX", 
    "name":"Portland International Airport", 
    "street1":"7000 NE Airport Way", 
    "city":"Portland", 
    "cityCode":"PDX", 
    "stateCode":"OR", 
    "postalCode":"97218", 
    "countryCode":"US", 
    "countryName":"United States" 
     } 

     } 

Im просто пытается захватить содержание 'имя'. Является ли $ .getJSON правильной функцией, или я должен использовать $ .ajax или $ .get? Thanks

+2

Почему вы в том числе две версии JQuery? – naomik

+0

Есть ли ошибки в консоли? Если вы распечатаете 'json.airport.name' с помощью' console.log', что отображается? –

+2

@naomik Потому что у вас никогда не может быть достаточно jQuery. –

ответ

0

Проблема здесь в том, что .getJSON не может возвращать данные для этого URL-адреса.

Запрос на перекрестный запрос заблокирован: политика одного и того же происхождения запрещает чтение удаленного ресурса по адресу https://api.flightstats.com/flex/airports/samples/v1/lts/Airport_response.json. Это можно устранить, переместив ресурс в тот же домен или включив CORS.

Если вы контролируете сайт flightstats.com, вы можете добавить для этого необходимые заголовки. Если вы этого не сделаете, вы, вероятно, захотите создать облегченную выборку на стороне сервера, чтобы отобразить необходимый json, используя правильные ответы CORS.

Для получения дополнительной информации, чем я могу легко поместить в StackOverflow страницу о CORS, пожалуйста, см https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

+0

Похоже, что полный ответ: OP должен переключиться на '$ .get()' и использовать JSONP в качестве формата, так как API поддерживает это, и он выполняет перекрестное происхождение. – jfriend00

+0

Я признаю, что не знаю, что предлагает FlightStats.com с точки зрения API. Я обращался к вопросу о том, почему сам getJSON не работал. Как часть jQuery. Но да, если flightstats.com поддерживает JSONP, ответ, который использует .get и JSONP, будет более полным для этого очень конкретного ответа на использование API FlightStats.com. – Callek

+0

@ Callek, CORS показалось мне немного запутанным. Использование $ .get и JSONP отлично работало. Спасибо, парни –

Смежные вопросы