我在从数组获取JSON数据时遇到问题。
我试图打印数组数据,但是它不起作用:
left: 0;
right: 0;
top: 0;
bottom: 0;
我收到“未定义的错误” 。
答案 0 :(得分:2)
您的问题是:
console.log(arr)
document.getElementById('asd').innerHTML=arr[0];
在您最终的.then
之外,这意味着它将在首次执行代码时运行,而不是在方法收到其结果之后。相反,您需要将其放入最终的.then
回调中,以便它首先填充您的数组,然后输出结果:
function myfunction(){
var arr = [];
fetch('https://api.blockchair.com/bitcoin-sv/blocks?a=month,median(transaction_count)')
.then(response => response.json())
.then(result => {
arr.push(result);
console.log(arr);
document.getElementById('asd').innerHTML = JSON.stringify(arr[0]);
});
}
此外,如果要将输出添加到DOM,则需要.stringify
以便可以正确显示数据。
答案 1 :(得分:0)
您确实需要修复回调函数,并且数组对象也存在于数据中。请参考以下代码段。
<div id='asd'>lalala</div>
<button onclick='myfunction()'>click me</button>
<script>
function myfunction(){
var arr = [];
fetch('https://api.blockchair.com/bitcoin-sv/blocks?a=month,median(transaction_count)')
.then(function(response) {
return response.json();
}).then(function(myJson) {
arr.push(JSON.stringify(myJson.data));
document.getElementById('asd').innerHTML=arr[0];
});
}
</script>
答案 2 :(得分:0)
代码中的问题是您正在使用访存来访问服务器,并且这是异步操作,因为您需要在{{1}中等待服务器的响应}功能。
您需要将数组记录在then
函数中。
应该是:
then
答案 3 :(得分:0)
这就是你想要的。
function myfunction() {
fetch('https://api.blockchair.com/bitcoin-sv/blocks?a=month,median(transaction_count)')
.then(response => response.json())
.then(theJson => {
const arr = theJson.data
document.getElementById('asd').innerHTML = JSON.stringify(arr[0])
})
}
<div id='asd'>lalala</div>
<button onclick='myfunction()'>click me</button>