下面注释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;
}
};
答案 0 :(得分:3)
对此有很多重复的问题,但没有一个有非常直接的答案。
AJAX请求,例如getJSON,是异步的。当你进行调用时,它立即返回,而你提供的成功函数直到一段时间后才被调用。这可以是从几毫秒到几秒的任何地方,具体取决于请求。
所以在下一行调用情节,期望结果已经到来,不会起作用。你需要在成功回调中进行策划。
在您的情况下,如果您有两个单独的负载,则需要检查每个负载是否已经到达另一个负载的结果。如果是这样,你可以绘制;否则你需要返回并让其他回调处理它。
答案 1 :(得分: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
}
}
}
};