2013-10-28 61 views
0

alert("inside function: " +data);在下面注释掉时,数据线不会显示在图上,但是当其未注释并且用户关闭警报时,图形会填充数据集。
在调用时间为$.plot时,数据是否能够完全加载?flot图不显示数据,数据未完全加载?

[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; 
    } 
}; 

回答

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 
      } 
     } 
    } 
}; 
3

有一吨的这种重复的问题,但没有一个非常直接的回答。

AJAX请求,例如, getJSON,是异步的。当你打电话时,它会立即返回,而你所提供的成功功能在一段时间后才会被调用。根据请求,这可以在几毫秒到几秒之间的任何地方。

因此,在下一行调用plot,期待结果已经到达,不会奏效。你需要在你的成功回调中进行阴谋。

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