4

Flot jQuery プラグインを使用して、Web サイトでグラフをレンダリングしています。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

0

私もそのようなタイプの問題に直面しましたが、私の場合、Datetimeはすでにこのように「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'),

getDate() は 5 を返すため、 min max にも moment.js () を使用しましたが、 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 に答える