1

我正在创建一个动态创建的图表,如果没有一个系列,它将添加一个系列,如果有一个则添加一个点。我收到一个未捕获的类型错误:无法调用未定义的方法“addSeries”。我环顾四周,找不到为什么它说该方法未定义。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript" src="highcharts.js"></script>
$(document).ready(function () {

    var chart1 = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'column',
            events: {
                load: requestData
            }
        },
        title: {
            text: 'Survey Chart'

        },
        xAxis: {
            categories: [],
            title: {
                text: 'Question Number'
            }

        },
        yAxis: {
            title: {
                text: 'Total Answered'
            }
        },
        legend: {
            layout: 'vertical',
            align: 'left',
            verticalAlign: 'top',
            x: 100,
            y: 70,
            floating: true
        },
        series: []
    });

使用文档准备功能占用整个脚本,我具有以下功能

    function requestData() {
    ajaxCall(chartCreate, createSeries, "services/Survey.svc/DoWork", "{}");
    chart1.redraw();
};


function chartCreate(point) {
    var temp;
    temp = $.parseJSON(point.d);
    $.each(temp, function (key, p) {
        var seriesObj;
        seriesObj = seriesExists(p.mcAnswer);
        if (seriesObj.status == false) {
            chart1.addSeries({name: '' + p.mcAnswer + '', data: [] });
            chart1.series[seriesObj.count].addPoint(p.total, false);
        } else {
            chart1.series[seriesObj.count].addPoint(p.total, false);
        }
    });
};

//loops through all the series to see if the series exists.
//if true returns index and true if not just returns false
function seriesExists(name) {
    var ct = 0;
    //var len = chart1.series.length;
    var len = 0;
    if (len > 0) {
        $.each(chart1.series, function (count, curSeries) {
            if (curSeries.name == name) {
                return { 'count': count, 'status': true };
            }
            ct = count;
        });
    }
    return { 'count': ct, 'status': false };
};    function createSeries() {
    alert("error");
};

//$.ajaxCall({successFun: function, errorFun: function, source: "", data: {}});
function ajaxCall(myFunSuccess, myFunError, url, data) {
    //chart1 = chartTemp;
    $.ajax({
        type: "POST",
        async: false,
        url: url,
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: myFunSuccess,
        error: myFunError
    });
    //return chart1;
};

我可以很好地使用 ajax 函数调用,这是当我到达我遇到问题的 chartCreate 时。

4

1 回答 1

1

chart1问题是您在获取图表参考之前尝试添加系列。这就是为什么chart1没有addSeries方法。

你可以在这里看到这个问题。

chart1要修复它,您可以在 call 之前手动设置图表参考requestData
像下面这样。

load: function() {
    chart1 = this; // `this` is the reference to the chart
    requestData();
}
于 2012-12-28T19:19:00.913 回答