Javascript JSON.parse()永远不会完成
你知道为什么下面的html永远在JSON.parse(..)上阻塞吗 (我试图解析来自IoT服务器的json响应,json似乎有效,但解析被冻结)Javascript JSON.parse()永远不会完成,javascript,html,json,Javascript,Html,Json,你知道为什么下面的html永远在JSON.parse(..)上阻塞吗 (我试图解析来自IoT服务器的json响应,json似乎有效,但解析被冻结) 变量数据1={ “东西”:1000, “最后”:[ {“t”:1541239266580,“r”:96,“d:[138,47,188,0,0,18,0,0]}, {“t”:1541236276321,“r”:97,“d:[140,49187,0,0,17,0,0]}, {“t”:15412361222,“r”:98,“d”:[140,49187,0
变量数据1={
“东西”:1000,
“最后”:[
{“t”:1541239266580,“r”:96,“d:[138,47,188,0,0,18,0,0]},
{“t”:1541236276321,“r”:97,“d:[140,49187,0,0,17,0,0]},
{“t”:15412361222,“r”:98,“d”:[140,49187,0,0,18,0,0]}
]
};
函数iot_json_函数(数据){
var json_data=json.parse(数据);
var out=“Thing:“+json_data.Thing+”
”;
for(json_data.last中的行){
输出+=”&nsbp;时间:“+line.t+”
”;
输出+=”&nsbp;信号强度:“+line.r+”
”;
out+=“数据:”
用于(第d行中的val){
out+=val+“”;
}
out+=“
”
}
document.getElementById(“物联网数据转储”).innerHTML=out;
}
iot_json_函数(数据1);
它不会冻结,它会抛出一个错误:
SyntaxError:JSON中位置1处的意外标记o
例如:
var数据1={
“东西”:1000,
“最后”:[
{“t”:1541239266580,“r”:96,“d:[138,47,188,0,0,18,0,0]},
{“t”:1541236276321,“r”:97,“d:[140,49187,0,0,17,0,0]},
{“t”:15412361222,“r”:98,“d”:[140,49187,0,0,18,0,0]}
]
};
函数iot_json_函数(数据){
var json_data=json.parse(数据);
var out=“Thing:“+json_data.Thing+”
”;
for(json_data.last中的行){
输出+=”&nsbp;时间:“+line.t+”
”;
输出+=”&nsbp;信号强度:“+line.r+”
”;
out+=“数据:”
用于(第d行中的val){
out+=val+“”;
}
out+=“
”
}
document.getElementById(“物联网数据转储”).innerHTML=out;
}
试一试{
iot_json_函数(数据1);
}捕获(e){
控制台错误(e.message);
}
这不是问题所在(很可能是下一个问题),但是:代码正在成为问题的牺牲品(这是我贫血小博客上的一篇文章)。在适当的范围内声明变量(如line
和val
)。在松散模式下不声明它们会使它们成为全局性的。
<html>
<body>
<div id="iot_data_dump"></div>
<script>
var data1 = {
"thing": 1000,
"last": [
{"t": 1541239266580, "r": 96, "d": [ 138, 47, 188, 0, 0, 18, 0, 0] },
{"t": 1541236276321, "r": 97, "d": [ 140, 49, 187, 0, 0, 17, 0, 0] },
{"t": 1541236161222, "r": 98, "d": [ 140, 49, 187, 0, 0, 18, 0, 0] }
]
};
function iot_json_function(data) {
var json_data = JSON.parse(data);
var out = "Thing: " + json_data.thing + "<br>";
for (line in json_data.last) {
out += "&nsbp;Time: " + line.t + "<br>";
out += "&nsbp;Signal Strength: " + line.r + "<br>";
out += " Data: "
for (val in line.d) {
out += val + " ";
}
out += "<br>"
}
document.getElementById("iot_data_dump").innerHTML = out;
}
iot_json_function(data1);
</script>
</body>
</html>