json获取数据或调用函数

时间:2011-12-31 12:21:09

标签: javascript jquery json

这里的功能每秒都会被调用, 它只是从不输出:             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;

}

2 个答案:

答案 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数据。