1

我正在尝试使用迷你图生成饼图,但遇到了一些麻烦。我似乎无法弄清楚我做错了什么,但我觉得这是一个愚蠢的错误。

我正在使用以下代码在 div #traffic_bos_ss中生成迷你图:

//Display Visitor Screen Size Stats
$.getJSON('models/ucp/traffic/traffic_display_bos.php',
{   
    type: 'ss',
    server: server,
    api: api,
    ip: ip,
},
function(data)
{
    var values = data.views;
    //alert(values); 


    $('#traffic_bos_ss').sparkline(values,
    {
        type: "pie",
        height: "100%",
        tooltipFormat: 'data.screen - {{value}}',

    });
});

获取的 JSON 字符串:

{"screen":"1220x1080, 1620x1080, 1920x1080","views":"[2, 2, 61]"}

由于某种原因,Sparklines 不处理变量。当我警告变量时,它会输出“[2, 2, 61]”。现在,当我替换代码段时,jQuery 代码确实可以工作:

 var values = data.views;

 var values = [2, 2, 61];

我究竟做错了什么?

4

1 回答 1

1

您说您对 getJSON 的调用正在返回“views”,它有一个字符串作为其值:

"[2, 2, 61]"

但是,当您将代码更改为:

var values = [2, 2, 61];

在这种情况下,您正确地指定了一个由三个整数组成的数组。

更改返回 JSON 的方法,以便它正确返回“视图”的整数数组而不是单个字符串,即

{"screen" : "1220x1080, 1620x1080, 1920x1080", "views": [2, 2, 61] }

请参阅此处的 jsFiddle 。

您还说您对 $.getJSON 的调用正在运行,但是您编写的方法调用不正常。有关 jQuery 的 getJSON 文档,请参见此处

以下应该有效:

var values;
$.getJSON( "models/ucp/traffic/traffic_display_bos.php", function(data) {
  values = data.views;
});

$('#traffic_bos_ss').sparkline(values,
{
 type: "pie",
 height: "100%",
 tooltipFormat: 'data.screen - {{value}}'
});
于 2013-10-27T21:51:16.410 回答