我有一个jqPlot饼图,我通过读取XML文件加载。但是,当我动态加载切片数组时,饼图无法正确呈现,当我对数组进行硬编码时,它似乎正确呈现。
我用来获取数组的代码是:
function loadSlices(xml)
{
slices = new Array();
$(xml).find("category").each(
function()
{
$(this).find("slice").each(
function()
{
slice = new Array($(this).attr("name"));
slice.push($(this).attr("size"));
slices.push(slice);
}
);
}
);
return slices;
}
加载图表的代码是:
function pieChart(name,xmlurl)
{
$.get(xmlurl,function(xml)
{
loadSize(name,xml);
slices= new Array();
slices.push(loadSlices(xml));
$("#debug").append("\nSLICES ARR (getting ready to load):");
debug2dArray(slices);
//debug2dArray(slices)
//now load in the pie chart
var plot1 = $.jqplot(name,[slices],
{
seriesDefaults:{
renderer: $.jqplot.PieRenderer,
rendererOptions:{
showDataLables: true
},
}
});
});//end get AJAX request
}
当我将切片数组硬编码为[[["PB&J",2],["Ham",1]]]
时,它的效果非常好。任何帮助将不胜感激。
<chart>
<size width="450px" height="200px"/>
<category>
<slice name="PB&J" size="3" />
<slice name="Ham" size="1" />
</category>
</chart>
答案 0 :(得分:2)
我找到了答案。当我第二次加载它时,它将嵌入数组中的第二个参数渲染为字符串["PB&J","1"]
,而jqPlot不喜欢它。因此,在推送整数周围添加一个parseInt()会导致正确的显示。要查看修补程序的演示,请参阅this jsfiddle。