4

我正在使用Flot jQuery 插件在我的网站上呈现图表。它在最新版本的 Chrome 中完美运行,但在 Firefox 和 Internet Explorer 中似乎失败了。我使用的是 Firefox 21 版和 Internet Explorer 10 版。以下是相关代码:

$(document).ready(function() {

    var currentURL = window.location;

    // This will hold our plot data
    var playersPlots = [];
    var pingPlots = [];

    // Make an AJAX request to get the server stats
    $.get(currentURL + '/stats.json', function(data) {
        $.each(data.stats, function(index, value) {
            playersPlots.push([new Date(value.ServerStat.created).getTime(), value.ServerStat.players]);
            pingPlots.push([new Date(value.ServerStat.created).getTime(), value.ServerStat.ping]);
        });

        $.plot($('#server-stats'), [{label: 'Players', data: playersPlots}, {label: 'Ping (ms)', data: pingPlots}], {
            xaxis: {
                mode: 'time',
                timeformat: '%I:%M',
                'tickSize': [3, "hour"]
            }
        });
    }, 'json');

});

图表在 Chrome 下(正确)呈现如下:

在此处输入图像描述

但像这样在 Firefox 和 Internet Explorer 下:

在此处输入图像描述

有没有人遇到过这个问题并知道原因?

还值得一提的是,Firefox 和 IE 中都没有控制台错误,它们都在发出 AJAX 请求并取回我通过查看开发人员工具的网络选项卡确认的正确数据。

编辑:还值得一提的是,如果我像这样对值进行硬编码:

$.plot($('#server-stats'), [{label: 'Players', data: [[10, 10], [20, 20]]}, {label: 'Ping (ms)', data: [[30, 30], [40, 40]]}], {

它适用于 Firefox、IE 和 Chrome。

4

2 回答 2

7

这是因为我的日期格式。默认情况下YYYY-MM-DD HH:MM:SS,MySQL 在需要时返回 DATETIMEYYYY-MM-DDTHH:MM:SS

于 2013-09-22T15:58:23.183 回答
0

我也遇到过此类问题,但在我的情况下,日期时间已经是这样的“YYYY-MM-DD HH:MM:SS”格式。

“2015-02-26T00:00:00”

但在那之后它在 Firefox 和 IE 上显示不正常。

然后我找到了解决方案,只是在日期中添加了“.000Z”,它对我来说很有效。

     for (var i = 0; i < data.length; i++) {
            res.push([new Date(data[i].MONTH + '.000Z'), data[i].USEDUNIT]);
        }


min: new Date('2015-02-26T00:00:00.000Z'),
max: new Date('2015-03-04T00:00:00.000Z'),

对于 min max 我也使用了 moment.js () ,因为 getDate() 返回 5 但我需要 05 。

var minDate = new Date(moment().format('YYYY-MM-DD') + 'T00:00:00.000Z');
minDate.setDate(minDate.getDate() - 7);

var maxDate = new Date(moment().format('YYYY-MM-DD') + 'T00:00:00.000Z');
maxDate.setDate(maxDate.getDate() - 1);
于 2015-03-05T08:48:17.153 回答