Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过python websockets发送JSON字符串后,使用JS解码JSON字符串_Javascript_Python_Python 3.x_Websocket_P5.js - Fatal编程技术网

Javascript 通过python websockets发送JSON字符串后,使用JS解码JSON字符串

Javascript 通过python websockets发送JSON字符串后,使用JS解码JSON字符串,javascript,python,python-3.x,websocket,p5.js,Javascript,Python,Python 3.x,Websocket,P5.js,我的JavaScript代码无法读取JSON对象中的值 我的设置是:Raspberry pi->python->Websockets上的传感器很难看到问题所在,因为我们无法判断您何时调用draw()onmessage()将是异步的,因此需要确保在调用onmessage()函数后调用draw()。这可能意味着从onmessage回调中调用draw()。它说sensordata是未定义的,所以问题是sensordata没有设置。我认为问题在于onmessage是在draw之后调用的。你能在onmes

我的JavaScript代码无法读取JSON对象中的值


我的设置是:Raspberry pi->python->Websockets上的传感器很难看到问题所在,因为我们无法判断您何时调用
draw()
onmessage()
将是异步的,因此需要确保在调用
onmessage()
函数后调用
draw()
。这可能意味着从
onmessage
回调中调用
draw()
。它说
sensordata
未定义的
,所以问题是
sensordata
没有设置。我认为问题在于
onmessage
是在
draw
之后调用的。你能在
onmessage
中调用
draw
吗?设置
sensordata
之后?如果我尝试将
draw()
放在
onmessage
的内部,它就不起作用了。这显示了该代码。但是,如果我不使用
json
而是使用单个字符串,那么它确实可以工作()。这是否表明顺序和嵌套不是原因?我发现唯一的解决方法是
如果(typeof window.sensordata==“undefined”){hard code some values}或者{pressure=window.sensordata.pressure}
,就像前面的评论者所说的,在接收数据之前听起来有延迟,因此,
sensordata
最初没有填充。与将
draw
的定义放在
onmessage
中不同,您只需在收到
传感器数据后调用
draw
var ws = new WebSocket("ws://127.0.0.1:1234/")
ws.onmessage = function(event){
    window.sensordata = JSON.parse(event.data);
}
function setup(){ some code here }
function draw() { 
     ellipse(window.sensordata.humidity, 10,10,10)
}