我的JS代码无法读取json对象中的值。
我的设置是:Raspberry pi上的传感器-> python-> Websockets <-JS <-p5.js绘图。
我对JS不太熟练,因此最有可能出现问题。 使用python,我生成了一个看起来像这样的字典:
a_dict = {'humidity' : 55.1, 'temperature' : 33.9, 'magneticfield' : 13.2}
然后我json.dumps(a_dict)
,并使用websockets库将其发送到服务器。在浏览器中,我这样做:
var ws = new WebSocket("ws://127.0.0.1:1234/")
ws.onmessage = function(event){
window.sensordata = JSON.parse(event.data);
}
在同一文件中,我尝试访问p5.js
图形的数据:
function setup(){ some code here }
function draw() {
ellipse(window.sensordata.humidity, 10,10,10)
}
此行window.sensordata.humidity
触发
未捕获的TypeError:无法读取未定义的属性“湿度”
这是我尝试过的:
首先更改绘制顺序,其次更改websocket(反之亦然)
console.log(window.sensordata)
打印具有正确字段的正确对象,但是console.log(window.sensordata.humidity)
抛出与上述相同的错误。
将其命名为window.sensordata['humidity']
也无济于事。
编辑:
我尝试运行它,仅发送一个字符串流(而不是JSON)。该代码有效(图形实时适应传感器的值)。此gist显示了代码。
我在浏览器控制台中观察到一种新的行为:如果我console.log(window.sensordata)
在draw()函数内部(运行速度约为50fps),则控制台会在前1个显示undefined
3个项目,然后返回一个值。会延迟服务器吗?