Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery flot插件未根据日期绘制图形_Javascript_Jquery_Ajax_Json_Graph - Fatal编程技术网

Javascript Jquery flot插件未根据日期绘制图形

Javascript Jquery flot插件未根据日期绘制图形,javascript,jquery,ajax,json,graph,Javascript,Jquery,Ajax,Json,Graph,我正在尝试使用jquery flot插件和JSON数据绘制一个图。我需要做的是 当页面加载时,它将进行ajax调用并从服务器接收json数据 从收到的json中,我需要添加“x”和“y”轴标签。我想画一张图表 根据json数据中的点 “Y”轴的值必须介于0到100之间 “X”轴应该只有json数据值 我的剧本是: //var maxDate = new Date(); //var minDate = new Date(); var options = {

我正在尝试使用jquery flot插件和JSON数据绘制一个图。我需要做的是

  • 当页面加载时,它将进行ajax调用并从服务器接收json数据
  • 从收到的json中,我需要添加“x”和“y”轴标签。我想画一张图表
  • 根据json数据中的点
  • “Y”轴的值必须介于0到100之间
  • “X”轴应该只有json数据值
我的剧本是:

    //var maxDate = new Date();
    //var minDate = new Date();
    var options = {
        series: {
            lines: {
                show: true
            },
            points: {
                show: true
            }
        },
        grid: {
            hoverable: true,
            clickable: true
        },
        xaxis: { //min: minDate.setMonth(maxDate.getMonth() - 12),
                //max: maxDate,
                mode: "time",
                monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
                timeformat: "%b(%Y)" 
        },
        yaxis: {
            min: 0,
            max: 100,
            ticks: 10
        }
    var data = [];
    var placeholder = $("#trigo");

        var dataurl = 'cprogress.php?action=overall';

        // then fetch the data with jQuery
        function onDataReceived(series) {
            data.push(series);
            $.plot(placeholder, data, options);
            setData(data);
         }

        $.ajax({
            url: dataurl,
            method: 'GET',
            dataType: 'json',
            success: onDataReceived
        });
现在我的图表是这样的

还有JSON

[["2013-11-05",8.3333333333333],["2013-12-05",0]]
我想打印的是 2013年11月和2013年12月,必须从8.33到0绘制图表现在是1970年1月,为什么我不知道

请任何人帮我解决这个问题。两天来我一直在努力解决这个问题。谢谢…

这里发生了几件事。首先,弗洛特预计的日期将是1970年以来的百万秒。当一个字符串被传递时,它只会对您的字符串输入计算为-1000、0和1000。结果是三个日期,基本上都是1970年1月

因此,您需要一个能够为您操作这些日期输入的小助手函数

function formatTime(input){
 for( var i = 0; i < input.length; i++ ){
  var date = input[i][0];
  input[i][0] = new Date(date).getTime();
 }
 return input;
}
因此,这将解决“时代”问题。然而,我注意到还有一个障碍。一旦您这样做,图形的格式将显示两个标签紧挨着彼此。这是因为(如果自定义被注释掉,可以观察到)flot希望按天显示范围。因此,月份的变化(在一天范围的最后)是11月和12月的位置。为了克服这个问题,我建议使用

autoscaleMargin: 1,
用于x轴自定义。演示还包括一个小的单击示例(主要是为了验证数据点的准确性)

查阅的参考文献:


您编写的JSON实际上就是您的
cprogress.php?总的来说
页面正在打印的内容,还是您想要的内容?这个问题可能看起来很愚蠢,但我只是问你的PHP是否正确。@Kevin Cittadini我有
jquery.flot.time.js
。因此,只有我的图表显示的是1970年1月的<代码>和你所说的**文档报告模式:null**@Kevin Cittadini my<代码>php是正确的。结果将根据情况而变化。所以我不想在
json
Nothing中得到结果,我只是引用了文档行。是的,我后来发现了。无论如何,看看这个。日期必须为Javascript时间戳,但您返回的日期格式为
yyyy-mm-dd
。Javascript时间戳是Unix时间戳的1000倍(页面上也这么说)@Kevin Cittadini谢谢你的建议。现在它工作得很好,谢谢你的回答。我已经根据Kevin Cittadini的建议解决了我的问题,我只需要在我的
php
脚本中将
strotime
乘以
1000
。它解决了我的问题。谢谢你提供了更详细的答案。我需要一个关于这个图表的小帮助。我想根据数据设置图表中的x轴刻度。例如,如果五月数据是
2013-11-052013-12-052014-01-05
,那么我只想要
2013年11月、2013年12月、2013年1月
autoscaleMargin: 1,