Ошибка при парсинге JavaScript веб-страницы JSON

Я пытаюсь очистить веб-страницу JSON, но она не работает. Не уверен, что случилось. Вот мой код js / jQuery:

 $.getJSON('http://www.whateverorigin.org/get?url=' + encodeURIComponent('https://api.coinmarketcap.com/v1/ticker/ethereum/') + '&callback=?', function (data) {
    console.info(data.contents);
    var ethPrice = JSON.parse(data.contents).price_usd;
    alert(ethPrice)
});

Я получаю сообщение об ошибке:

Uncaught SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at Object.success (scripts.js:6)
    at i (jquery.min.js:2)
    at Object.fireWith [as resolveWith] (jquery.min.js:2)
    at A (jquery.min.js:4)
    at HTMLScriptElement.c (jquery.min.js:4)
    at HTMLScriptElement.dispatch (jquery.min.js:3)
    at HTMLScriptElement.q.handle (jquery.min.js:3)

Пожалуйста помоги. Большое спасибо :)

Краткое примечание: alert не покажет вам детали объекта. Используйте console.info

Sterling Archer 29.03.2018 20:24

Как выглядит вывод вашего console.info(data.contents);? Бьюсь об заклад, первый символ - o.

Intervalia 29.03.2018 20:26

удалите &callback=? из вашего запроса GET

Meghan 29.03.2018 20:27

Ваш data.contents представляет собой массив, поэтому вам не нужно анализировать. Просто используйте: data.contents [0] .price_usd.

gaetanoM 29.03.2018 20:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
57
2

Ответы 2

Похоже, ваш результат json - это массив json. Таким образом, у него не может быть доступа к полю, так как это массив. Наверное, тебе это нужно.

$.getJSON('http://www.whateverorigin.org/get?url=' + encodeURIComponent('https://api.coinmarketcap.com/v1/ticker/ethereum/') + '&callback=?', function (data) {
    console.info(data.contents);
    var response = JSON.parse(data.contents);
    for (var i = 0; i < response.length; i ++) {
        var ethPrice = response[i].price_usd;
        alert(ethPrice);
    }

});
You might also need to confirm if data has contents.

$.getJSON('http://www.whateverorigin.org/get?url=' + 
encodeURIComponent('https://api.coinmarketcap.com/v1/ticker/ethereum/') 
+ '&callback=?', function (data) {
if (data && data.contents) {
    console.info(data.contents);
 var contents = JSON.parse(data.contents);
//loop through contents for a price_usd attribute
for (let i = 0; i < contents.length; i++) {
if (contents[i].price_usd) {
alert(contents[i].price_usd)
}
}

} });

Другие вопросы по теме