无法将获取的数据的属性发送到innerHTML

问题描述 投票:0回答:1

我对 JavaScript 有点陌生,想要从远程站点获取传感器数据并将其显示在本地页面的 DIV 元素中。 获取的数据有两个属性:名称和值。

当到达脚本中的行时:

document.getElementById('sensorValue').innerHTML = data.value;
控制台显示错误消息“无法读取未定义的属性(读取‘值’)”。

上面几行,脚本成功获取 data.value 并将其发送到 console.log。

我不知道如何使用innerHTML将data.value获取到DIV元素中。


    <html>
    <body>
    <h2>fetch & innerHTML test</h2>

    <div id='sensorValue'></div>

    <script>

        fetch("https://example.com/filename.php?apikey=1567477555629&setting1=1" )
        .then( response => {

        if( ! response.ok ) {
            throw new Error("Could not fetch resource")
        }
        return response.json()
        })

        .then( data => console.log(data.value))   

        .then(data => {
        document.getElementById('sensorValue').innerHTML = data.value;
        })
        .catch( error => console.error(error));

    </script>
    </body>
    </html>

我更改了相关行以分配字符串而不是 data.value:

document.getElementById('sensorValue').innerHTML = "Test";
并且它成功地用 id='sensorValue' 填充了 DIV。

感谢您的见解!

javascript-objects fetch-api
1个回答
0
投票

此回调返回

undefined
:

.then(data => console.log(data.value))

所以在下一个回调中

data
将是
undefined
:

.then(data => {
  document.getElementById('sensorValue').innerHTML = data.value;
})

删除第一个操作,或合并这两个操作:

.then(data => {
  console.log(data);
  document.getElementById('sensorValue').innerHTML = data.value;
})

或者,如果您想将它们分开,请返回值:

.then(data => {
  console.log(data.value);
  return data;
})
© www.soinside.com 2019 - 2024. All rights reserved.