2013-08-24 3 views
0

Я пытаюсь запросить API FlightStats, и теперь я (я думаю) на последнем препятствии. У меня есть рабочий запрос/ответ ajax, который возвращает правильные данные, однако функция ошибки всегда называется скорее, чем успех. Это связано с тем, как используется параметр обратного вызова, но я не знаю, что требуется, и не может найти документацию.flightstats и jQuery - ошибка обратного вызова

Ниже мой код, имейте в виду, что если я уйду из параметра обратного вызова я получаю один и тот же текст сообщения об ошибке, как если бы я включить его с помощью «& обратного вызова = ...», «& обратного вызова =?», «? callback = ... "или"? callback =? " потому что в каждом f эти случаи jQuery добавляет еще один параметр обратного вызова!

$.ajax({ 
    url: 'https://api.flightstats.com/flex/flightstatus/rest/v2/json/flight/status/QF/1/dep/2013/08/22?appId=<appId>&appKey=<appKey>&utc=false', 
    data: {}, 
    dataType: 'jsonp', 
    cache: false, 
    success: function(data) { 
     $('#response').html(data); 
    }, 
    error: function(xhr, ajaxOptions, thrownError) { //do with ajax errors 
     console.log('Fail: ' + thrownError); 
    } 
}); 

и console.log ошибка:

Fail: Error: jQuery110105137549804057926_1377341987289 was not called 
+0

Его исправлено - используя код ниже. $ .ajax ({ тип: 'GET', url: 'https://api.flightstats.com/flex/flightstatus/rest/v2/jsonp/flight/status/QF/1/dep/2013/ ? 08/22 APPID = 741be83f & appKey = 08293e9e8eb43a5eb7b375d0e5cc1737 & = UTC ложь ' DATATYPE: 'JSONP', jsonpCallback: 'flightstatus', // jsonpCallback: 'flightstatus', успех: функция() {console.log (' успех! ');}, error: function() {console.log (' Uh Oh! ');} }); – SBignell

ответ

1

Если вызываемый URL, в данном случае:

https://api.flightstats.com/flex/flightstatus/rest/v2/json/flight/status/QF/1/dep/2013/08/22?appId= & appKey = & UTC = ложь

не возвращается Код HTTP 200 OK, тогда ваша функция ошибки будет запущена.

+0

Он возвращает HTTP 200 OK - возможно, я не был достаточно ясен, получая правильный ответ, а также данные json. Я читал это на сайте jquery .. Я вижу, что это вопрос jquery, который теперь не имеет никакого отношения к API. «Когда данные извлекаются с удаленных серверов (что возможно только с помощью скрипта или jsonp типы данных), обратные вызовы ошибок и глобальные события никогда не будут запущены ». Таким образом, он не должен запускать функцию ошибки. Ive удалил его сейчас, но получил ошибку «Uncaught SyntaxError: Неожиданный токен: 22: 1», который находится в json-данных. Я продолжу просмотр документов jquery. – SBignell

+0

Это невозможно для нас сказать, не увидев от вас SSCCE, но я также заметил, что вы не указали функцию jsonpCallback, и вы не указали contentType. Возможно, вам стоит взглянуть на рабочий пример здесь: http://www.jquery4u.com/json/jsonp-examples/ и использовать один из них. – Ozzy

1

Я нашел исправление, код ниже. Я не указал jsonp в запросе, поэтому возвращаемый формат был простым json, я также не понимал нюансов jsonp и вычислял его через другие вопросы с stackoverflow.

$.ajax({ 
      type: 'GET', 
      url: 'https://api.flightstats.com/flex/flightstatus/rest/v2/jsonp/flight/status/QF/1/dep/2013/08/22?appId=741be83f&appKey=08293e9e8eb43a5eb7b375d0e5cc1737&utc=false', 
      dataType: 'jsonp', 
      jsonpCallback: 'flightstatus', 
      //jsonpCallback: 'flightstatus', 
      success: function() { console.log('Success!'); },                     
      error: function() { console.log('Uh Oh!'); } 
     }); 
Смежные вопросы