代码之家  ›  专栏  ›  技术社区  ›  dietervdf

为什么flot不能处理(x,y)值数组?Javascript对象与数组?

  •  2
  • dietervdf  · 技术社区  · 9 年前

    我正在使用一些php脚本创建一个flot图。php生成数据并使用 json_encode 将这些数据传递给一些javascript flot代码,在那里我使用 jQuery.parseJson .

    我用的是 data -用(x,y)值填充的数组。绘制此图似乎不起作用。如果我将数组封装在一个对象中,flot将毫无问题地绘制它。为什么第一种方法不起作用?我在下面添加了一个jsFiddle。

    var data = '[["201518","1"],["201519","3"],["201520","6"]]',
        data2 = '{"data":[["201518","1"],["201519","3"],["201520","6"]]}';
    
    var set = jQuery.parseJSON(data),
        set2 = jQuery.parseJSON(data2);
    
    var placeholder = $('#placeholder');
    $.plot(placeholder, [set2.data]);
    //$.plot(placeholder, set); <= not working? Why?
    

    jsfiddle

    2 回复  |  直到 9 年前
        1
  •  3
  •   royhowie    9 年前

    您需要传递一个数组:

    $.plot(placeholder, [set])
    // instead of `$.plot(placeholder, set)`
    
        2
  •  2
  •   SteJ    9 年前

    两个问题。首先,当作为数组传递时,需要数字而不是字符串(请参见 here 上面写着

    注意,为了简化Flot中的内部逻辑,x和y 值必须是数字(即使指定了时间序列,请参见下面的 如何做到这一点)。这是一个常见问题,因为您可能会检索 并将其直接序列化为JSON,而无需 注意到错误的类型。如果你有神秘的错误,加倍 检查您输入的是数字而不是字符串。

    第二步(如另一个答案所指出的),您需要[数组]周围的集合。以下工作:

    $(document).ready(function () {
        var data = '[[201518,1], [201519,3], [201520,6]]',
            data2 = '{"data":[["201518","1"],["201519","3"],["201520","6"]]}';
    
        var set = jQuery.parseJSON(data),
            set2 = jQuery.parseJSON(data2);
    
        var placeholder = $('#placeholder');
        //$.plot(placeholder, [set2.data]);
        $.plot(placeholder, [set]);
    });