【发布时间】:2015-03-04 15:04:24
【问题描述】:
好的,所以我正在尝试从包含几个 LED 等状态的 json 文件中提取数据。我有一个每秒运行几次并提取数据并在网页加载它的脚本。问题是,服务器读取 json 文件大约 20+ 次后,最终会抛出这个错误。
SyntaxError: JSON.parse: 第 1 行第 1 列的数据意外结束 JSON 数据
// For toggling the LED/switch status indicators using the json data
$(document).ready(function() {
(function worker() {
$.ajax({
url: 'server_info.json',
success: function(data) {
var json = $.parseJSON(data);
console.log(json);
if (json.led_1 == "off") {
// do stuff
}
if (json.led_2 == "off") {
// do stuff
}
if (json.led_3 == "off") {
// do stuff
}
},
complete: function() {
// Schedule the next request when the current one's complete
setTimeout(worker, 250);
}
});
})();
});
json 文件如下所示:
{ "led_1": "on", "led_2": "on", "led_3": "on" }
在我看来,json 数据的格式总是正确的。我不明白错误来自哪里。有什么想法吗?
【问题讨论】:
-
要么在函数的开头抛出一个断点,要么在你的网络选项卡中观察网络流量,看看数据在出错之前是什么样子的。如果它在 20 次中只发生 1 次,那么您的代码可能没问题,并且数据一定不能正确输入。
-
你看错前数据是什么了吗?
console.log(data);你确定服务器没有返回不同的东西吗? -
我有时会在几次请求后收到会话 tmp files clear up failed 消息。也许有些事情搞砸了响应。
-
Unexpected end of input在line 1 column 1的错误表明data是一个空字符串。由于服务器似乎不认为这是一个错误,因此文件在尝试读取时可能是空的。 -
我认为 Jonathan Lonowski 是在做某事。我设置了一个断点,即使在错误发生之前数据也是相同的。我认为正在发生的事情是我编写的用于调整 JSON 文件的脚本是一次写入一个值,而不是一次写入所有值。因此,如果行星以特定方式对齐,当某些值丢失时读取 JSON 文件等,会发生什么。我将重写该脚本,看看是否可以修复它。
标签: javascript jquery html json