Я пытаюсь очистить веб-страницу 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)
Пожалуйста помоги. Большое спасибо :)
Как выглядит вывод вашего console.info(data.contents);? Бьюсь об заклад, первый символ - o.
удалите &callback=? из вашего запроса GET
Ваш data.contents представляет собой массив, поэтому вам не нужно анализировать. Просто используйте: data.contents [0] .price_usd.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Похоже, ваш результат 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)
}
}
} });
Краткое примечание:
alertне покажет вам детали объекта. Используйтеconsole.info