【发布时间】:2014-02-10 13:23:31
【问题描述】:
这很奇怪;这个函数在 Qt 中每 1 秒被一个定时器调用一次。查看if 声明;首先它解析一些 JSON 数据,然后记录它正在解析。正如我所料,console.log 仅在fileshow.txt 更改其内容时才会发生。但是 -- var parsed = JSON.parse(t) 的行每 1 秒报告一次解析错误,即使在那一秒内没有发生任何其他事情(包括日志记录):
function get() {
var xhr = new XMLHttpRequest;
xhr.open("GET", "/fileshow.txt");
xhr.onreadystatechange = function () {
var t = xhr.responseText;
if (t != tt.lastData) {
var parsed = JSON.parse(t);
console.log("parsing");
viewer.newImages(parsed.files);
thetime.shouldRepeat = parsed.repeat;
thetime.fps = parsed.fps;
tt.lastData = t;
thetime.running = true;
}
}
xhr.send()
}
即使我得到一个解析错误(这是一个不同的主题——尽管有错误,数据实际上是正确解析的,因为它通过上述公式路由就好了,程序的其他部分将数据作为预期),除非if 分支实际运行,否则我什至不会看到该源代码行的错误!当 if 分支甚至没有运行时,它如何报告只能在 if 分支中发生的解析错误?!
没有其他地方解析,针对这个JSON.parse调用的具体行号报错。
【问题讨论】:
-
“这是一个不同的话题——尽管有错误,数据实际上解析正确” 你怎么知道的?这是在方法外执行
console.log调用吗? -
@Qantas94Heavy 我正在解析上述代码中所述的数据,并且数据通过我的程序正确路由。我的问题不是关于错误本身的原因,而是当
if分支中没有其他任何事情发生时,如何在上面的代码中进行解析?我的 JSON 还通过了一些在线验证器。
标签: javascript json qt qml qtquick2