2017-02-08 2 views
0

В настоящее время я пытаюсь сделать кросс-доменный запрос Ajax API. Я использую jQuery для вызова и пытаюсь разобрать некоторые элементы из возврата.Uncaught TypeError on jQuery Cross-Origin Ajax Request

Вот запрос:

$.ajax({ 
    type: 'POST', 
    url: 'http://magicseaweed.com/api/APIKEY/forecast/?spot_id=665', 
    contentType: "text/plain", 
    dataType: "json", 
    xhrFields: { 
      withCredentials: false 
    }, 
    success: function(data) { 
      timestamp = data[0].localTimestamp; 
      alert(timestamp); 
    }, 
    error: function() { 
      alert("aw crap"); 
    } 
}); 

Вот ответ:

[{ 
    timestamp: 1366902000, 
    localTimestamp: 1366902000, 
    issueTimestamp: 1366848000, 
    fadedRating: 0, 
    solidRating: 0, 
    swell: { 
     minBreakingHeight: 1, 
     absMinBreakingHeight: 1.06, 
     maxBreakingHeight: 2, 
     absMaxBreakingHeight: 1.66, 
     unit: "ft", 
     components: { 
      combined: { 
      height: 1.1, 
      period: 14, 
      direction: 93.25, 
      compassDirection: "W" 
     }, 
     primary: { 
      height: 1, 
      period: 7, 
      direction: 83.37, 
      compassDirection: "W" 
     }, 
     secondary: { 
      height: 0.4, 
      period: 9, 
      direction: 92.32, 
      compassDirection: "W" 
     }, 
     tertiary: { 
      height: 0.3, 
      period: 13, 
      direction: 94.47, 
      compassDirection: "W" 
     } 
    } 
}] 

В настоящее время я просто пытаюсь получить строку времени, чтобы показать в окне предупреждения.

Вот ошибка я получаю:

Uncaught TypeError: Cannot read property 'localTimestamp' of undefined 
    at Object.success (app.js:11) 
    at i (jquery.min.js:2) 
    at Object.fireWith [as resolveWith] (jquery.min.js:2) 
    at A (jquery.min.js:4) 
    at XMLHttpRequest.<anonymous> (jquery.min.js:4) 

Где моя ошибка?

ответ

1

В запросе Ajax вы запросили ответ, как contentType: "text/plain",

так изменить это application/json или разобрать строку как Json с

data = JSON.parse(data); 
+0

'успех: функция (данные) { вар данных = JSON.stringify (данные); предупреждение (данные [0] .localTimestamp); } '} Нет ошибок в консоли, но предупреждение об успешном завершении возвращается« undefined » – longforshort

+0

Извините, что это должен быть JSON.parse (data), stringify вернет строку вместо json. Просто обновил ответ –

0
var parseData = JSON.parse(data); //turn json data to a javascript object 
    timestamp = parseData[0].localTimestamp; //then do something to the object 
Смежные вопросы