flot 图未显示数据,数据未完全加载

flot graph not displaying data, data not fully loaded?

本文关键字:数据 加载 显示 flot      更新时间:2023-09-26

当下面注释掉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;
    }
};

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

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

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

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

使用 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
            }
        }
    }
};