这里的功能每秒都会被调用, 它只是从不输出: console.log(“noise:”+ noise);
出现问题,我不知道该怎么做或者怎么弄明白。
function readEye() {
console.log("readEye");
$.getJSON('output.json', function(data){
faceDetected = data.faceDetected;
frameCount = data.frameCount;
noise = data.noise;
console.log("noise: "+noise);
});
// show values in devPanel
document.getElementById('faceDetected').innerHTML = "faceDetected: "+faceDetected;
}
答案 0 :(得分:5)
你偶然发现了"异步陷阱"。 $ .getJSON()不会停止正常的程序流程,也不会等到完成。因此,以下行document.getElementById('faceDetected').innerHTML = "faceDetected: "+faceDetected;
将被立即调用,其中未定义" faceDetected"变量。这种情况每秒都会发生,无论先前的任何请求是否完成......
一般来说,您应该只从AJAX请求的回调中开始新的超时。此外,您应该只使用" faceDetected"等变量。或"噪音"在回调中。因此,如果您想将这些值分配给DOM元素,则应该在回调中进行。
答案 1 :(得分:1)
同时检查output.json的格式 - 它必须格式正确并传递$ .parseJSON函数(http://api.jquery.com/jQuery.parseJSON/)。如文档(http://api.jquery.com/jquery.getjson/)中所述:
成功回调传递返回的数据,通常是a 由JSON结构定义并解析的JavaScript对象或数组 使用$ .parseJSON()方法。它也传递了文本状态 回应。
和
重要提示:从jQuery 1.4开始,如果JSON文件包含语法错误, 请求通常会无声地失败。避免经常手工编辑 出于这个原因的JSON数据。