数据无法通过ajax调用正确显示

时间:2016-07-13 17:47:25

标签: javascript jquery asp.net ajax highcharts

我目前正试图获取一张图表,我将其作为向下钻取,删除之前的所有系列数据并重新绘制新数据。下面我已经为图表添加了ajax调用和html / javascript。问题是,每当我调用图表时,它都会重建图表并进行双重调用。所以我一直试图让它简单地删除数据并使用ajax调用中的新数据重绘。

AJAX& SetData调用:

           self.drilldownLoad = (year: number) => {
            self.isDrilldownLoading(true);
            self.isDrilldownLoaded(false);

            $.ajax({
                xhrFields: { withCredentials: true },
                url: areaUrl + "api/Incident/IncidentDrilldown?year=" + year,
                success: data => {
                    self.isDrilldownLoading(false);
                    self.data(data);
                    self.setDrilldownPlotData(data);
                    self.isDrilldownLoaded(true);
                },
                error: data => {
                    self.loadingError(true)
                }
            });
        } 

        self.setDrilldownPlotData = (data: any) => {

            while (self.drilldownPlotData().length) {
                self.drilldownPlotData().pop();
            }

            while (self.drilldownPlotDataLabels().length) {
                self.drilldownPlotDataLabels().pop();
            }

            var len = data.List.length,
                i;

            var criticalData = [];

            for (i = 0; i < len; i++) {
                criticalData.push(
                    data.List[i].Critical 
                )
            }

            var highData = [];

            for (i = 0; i < len; i++) {
                highData.push(
                    data.List[i].High 
                )
            }

            var mediumData = [];

            for (i = 0; i < len; i++) {
                mediumData.push(
                    data.List[i].Medium 
                )
            }

            var lowData = [];

            for (i = 0; i < len; i++) {
                lowData.push(
                    data.List[i].Low 
                )
            }

            for (i = 0; i < len; i++) {
                self.drilldownPlotDataLabels.push(
                    data.List[i].IncidentMonth 
                )
            }

            self.drilldownPlotData.push(
                {
                    name: 'Critical',
                    data: criticalData,
                    color: '#fa5a5a',
                },
                {
                    name: 'High',
                    data: highData,
                    color: '#fea156',
                },
                {
                    name: 'Medium',
                    data: mediumData,
                    visible: false,
                    color: '#b191c3',
                },
                {
                    name: 'Low',
                    data: lowData,
                    visible: false,
                    color: '#83bfd1',
                }
            )
        }

这会创建初始图表。初始化图表后,每当我从此特定的ajax调用加载数据时,我都会将其设置为不重新创建。我似乎无法正确加载系列数据并重绘图表。

 var = subchartCreated = false;

         viewModel.isDrilldownLoaded.subscribe(function () {
        if (!subchartCreated) {
            specificChart();
            subchartCreated = true;
        }
        if (subchartCreated === true)
        {
            for (var i = 0; i < specificChart.series.length; i++) {
                specificChart.series[i].remove(true); //forces the chart to redraw
            }
        }
    });

我有两个图表,一个图表是初始图表,一个图表正好加载。第二个图表是感兴趣的,我想加载一次,然后只需加载系列数据,从第二个图表中删除它,然后重新绘制新数据。这是我在第一个图表中加载第二个图表的点击功能。目前,它适用于第一次加载,但不会更新超出该数据的数据。

      point: {
           events: {
           click: function () {
                   viewModel.drilldownLoad(this.category);
                   $('#drilldownButton').removeClass('hidden');
                   $('#yearlyincident-container').addClass('hidden');
                   $('#drilldown-container').removeClass('hidden');
                   $('#incidentInfoGrid').addClass('hidden');
                   $('#incidentDrillDownGrid').removeClass('hidden');
                   getDrilldownData(this.category);
                  }
               }
            }

我觉得这是一个相对容易的修复,但我只是没有做对。我最初的尝试只删除了第一个图表的点击功能。任何有关这方面的帮助将不胜感激。谢谢!

0 个答案:

没有答案