2013-10-28 6 views
0

Линии данных не отображаются на графике, когда alert("inside function: " +data); закомментирован ниже, но когда его раскомментированные и пользователь отклоняет предупреждение, граф заполняется наборами данных.
Могут ли данные не быть полностью загружены к моменту $.plot?График флота не отображает данные, данные не загружены полностью?

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

Script ..

$(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 и отправить JavaScript с AJAX ..

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, являются асинхронными. Когда вы совершаете вызов, он возвращается немедленно, а функция успеха, которую вы предоставили, не вызывается до некоторого времени позже. Это может быть от нескольких миллисекунд до нескольких секунд, в зависимости от запроса.

Так что вызывать сюжет на следующей строке, ожидая, что результаты уже наступили, не будут работать. Вам нужно запечатлеть внутри своего обратного вызова.

В вашем случае, когда у вас есть две отдельные нагрузки, вам нужно будет проверить каждый из них, если результат другого уже наступил. Если это так, вы можете построить; в противном случае вам нужно вернуться и позволить другому обратному вызову позаботиться об этом.

Смежные вопросы