0

alert("inside function: " +data);当在下面注释掉时,数据线不会显示在图表上,但是当其未注释并且用户关闭警报时,图表会填充数据集。调用
的时候数据还没有完全加载吗?$.plot

[01:05:21.158] TypeError: myfile is undefined @ http://localhost:8080/App/js/App.js:7

脚本 ..

$(function() {

    var plotarea = $("#placeholder"),
        myfile = Script_JSON.getData("myfile"),
        anotherfile = Script_JSON.getData("anotherfile");

    $.plot(plotarea, [myfile.data, anotherfile.data]);
}); 

var Script_JSON = {

    getData: function(component) {

        var data;

        $.getJSON("data/" + component + ".json", function(json) {

            data=json;
        });

        //alert("inside function: " +data);

        return data;
    }
};
4

2 回答 2

3

有很多重复的问题,但没有一个非常直接的答案。

AJAX 请求,例如 getJSON,是异步的。当您进行调用时,它会立即返回,而您提供的成功函数直到一段时间后才会被调用。这可以是几毫秒到几秒之间的任何时间,具体取决于请求。

因此,在下一行调用 plot ,期望结果已经到来,是行不通的。您需要在成功回调中进行绘图。

在您的情况下,如果您有两个单独的负载,您将需要检查每个负载是否已经到达另一个负载的结果。如果是这样,您可以绘制;否则您需要返回并让其他回调处理它。

于 2013-10-28T01:25:23.763 回答
0

使用 Java Servlet 从文件中读取 json 数据并使用 AJAX 发送到 javascript ..

var App_AJAX = {
    getData: function(){

        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = callback;
        xmlhttp.open("GET", "Servlet, true);
        xmlhttp.send(null);

        function callback() {

            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

                $("#body").append('<div id="content"><div class="demo-container"><div id="placeholder" class="demo-placeholder"></div></div></div>');   

                var datasets = JSON.parse(xmlhttp.responseText);                
            } else {
                // have not recieved data yet
            }
        }
    }
};
于 2013-10-29T12:33:27.483 回答