一直在搜索,找不到我想要的东西.需要将多个系列加载到一个jqplot中,每个系列都来自自己的数据文件.
这里的示例http://www.jqplot.com/tests/data-renderers.php确实显示了如何从文件加载系列,但是当我将文件转换为具有日期数据时,它会停止工作,可能只是格式化问题,但无法解决.我究竟做错了什么?
以下是txt文件中的数据:[["7/11/2011 04:00:00 am",85.0],["7/12/2011 04:00:00 AM",87.4],["7/13/2011 04:00:00 AM",90.0]]
这是代码:
<script class="code" type="text/javascript">$(document).ready(function(){
var line = [ ];
var ajaxDataRenderer = function(url, plot) {
var ret = null;
$.ajax({
// have to use synchronous here, else returns before data is fetched
async: false,
url: url,
dataType:'json',
success: function(data) {
ret = data;
}
});
return ret;
};
var jsonurl = "./jsondata1.txt";
plo12 = $.jqplot('chart2', jsonurl,{
title: 'AJAX JSON Data Renderer',
dataRenderer: ajaxDataRenderer,
axes: {
xaxis: {
renderer:$.jqplot.DateAxisRenderer,
tickInterval: '1 day',
tickOptions:{formatString:'%y/%m/%d'}
}
}
});
});</script>
Run Code Online (Sandbox Code Playgroud)
您可以使用该dataRendererOptions参数来声明可能的文件,如下所示:
plo12 = $.jqplot('chart2', jsonurl,{
title: 'AJAX JSON Data Renderer',
dataRenderer: ajaxDataRenderer,
dataRendererOptions: {file1:'name_of_file_1', file2:'name_of_file2'}
axes: {
xaxis: {
Run Code Online (Sandbox Code Playgroud)
接下来使用 for-each 迭代 dataRendererOptions - 对象:
var ajaxDataRenderer = function(url, plot,op) {
var ret = null;
$.each(op,function(i,n) {
$.ajax({
// have to use synchronous here, else returns before data is fetched
async: false,
url: url+'/'+i,
dataType:'json',
success: function(data) {
ret[]= data;
}
}); //end ajax
});//end each
return ret;
}
Run Code Online (Sandbox Code Playgroud)
该代码不是测试集,但背后的想法可以满足您的需求。