1

我有一个通过读取 XML 文件加载的 jqPlot 饼图。但是,当我动态加载切片数组时,饼图无法正确呈现,当我对数组进行硬编码时,它似乎可以正确呈现。

我用来获取数组的代码是:

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
 }

当我对 slices 数组进行硬编码时,[[["PB&J",2],["Ham",1]]]它工作得非常好。任何帮助,将不胜感激。

更新

XML

<chart>
    <size width="450px" height="200px"/>
        <category>
              <slice name="PB&J" size="3" />
              <slice name="Ham"  size="1" />
         </category>
 </chart>

JSFiddles

静态数组

4

1 回答 1

2

我找到了答案。当我第二次加载它时,它会将嵌入数组中的第二个参数渲染为字符串 so ["PB&J","1"],这是 jqPlot 不喜欢的。因此,在整数的推送周围添加一个 parseInt() 会导致正确的显示。要查看修复演示,请参阅此 jsfiddle

于 2012-06-15T15:27:38.707 回答