我从WebSocket的材料收到这样:如何解析这些数据?
{"sensorValue":{"id":5168,"roadStationId":23401,"name":"OHITUKSET_5MIN_LIUKUVA_SUUNTA2_MS2","oldName":"ohitukset_5min_liukuva_suunta2_MS2","shortName":"MTila2","sensorValue":69,"sensorUnit":"***"}}
{"sensorValue":{"id":5125,"roadStationId":23401,"name":"KESKINOPEUS_5MIN_LIUKUVA_SUUNTA2","oldName":"averageSpeed2","shortName":"km/h2","sensorValue":83,"sensorUnit":"km/h"}}
我想要做的是让名字和sensorValue的值。到目前为止,我有这样的代码:
function connect() {
var url = "ws://...";
var socket = new WebSocket(url);
socket.onopen = function (event) {
console.info('Socket is open');
}
socket.onmessage = function(message) {
addMessage(message);
};
}
function addMessage(message) {
var myJSON = JSON.stringify(message.data);
var obj = JSON.parse(myJSON);
document.getElementById("sensorValue").innerHTML = obj.sensorValue;
}
现在,无论我做什么,我得到这样的:getElementryById的
uncaught TypeError: Cannot set property 'innerHTML' of null".
我尝试了好几种网络教程和他们工作得很好。
为什么我会收到此错误?
你的HTML中有一个元素,其ID为sensorValue? – danielspaniol
首先:在不需要'JSON.stringify'后直接调用'JSON.parse'。只是不要首先调用'JSON.stringify'。其次,该错误意味着ID为'sensorValue'的元素不存在。确保它确实存在(通过创建它或通过更正您传递的参数)。这个错误与*解析数据无关(如果你没有序列化,你不需要做任何事情)。 –