我正在尝试使用Sparklines生成饼图,但我遇到了一些麻烦。我似乎无法弄清楚我做错了什么,但我觉得这是一个愚蠢的错误。
我正在使用以下代码在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];
我做错了什么?
答案 0 :(得分:1)
你说你对getJSON的调用是返回“views”,它有一个字符串作为其值:
"[2, 2, 61]"
但是,当您将代码更改为:
时var values = [2, 2, 61];
在这种情况下,您正确指定了一个包含三个整数的数组。
更改返回JSON的方法,使其正确返回“视图”的整数数组,而不是单个字符串,即
{"screen" : "1220x1080, 1620x1080, 1920x1080", "views": [2, 2, 61] }
请参阅jsFiddle here。
另外你说你对$ .getJSON的调用是有效的,但你写的方法调用是不正常的。有关jQuery的getJSON文档,请参阅here。
以下内容应该有效:
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}}'
});