php - Amcharts 构造未定义

标签 php jquery amcharts

嗯!!!抱歉我的英语不好。 这是我的 amcharts 问题。我正在我的新项目中做一些图形。 该项目基于 MVC 和 PHP5 构建。 我们这样做是为了获得结果:

//var ChartData = AmCharts.loadJSON(baseurl+'libs/jsonvalueconspiration.php?id=...);

Amcharts 示例中给出了 Amcharts.loadjson 函数的使用方法。

但现在我们通过 AJAX 进行。问题???? 我们得到了相同的结果,并且代码的所有步骤都是相同的,但控制台抛出了一个问题:

无法读取未定义的 amstock.js.pagespeed.ce.sQT2FSFmcG.js:49 的属性“构造”

这是我们的 js,它必须在 div 上获取图形:

//AmCharts.ready(function() {
    var firstData = $.ajax({
        type: 'POST',       
        url: baseurl+'action/charts/SOME_FUNCTION',
        data: { id : id },
        dataType: 'JSON',
        async: false,
        success: function(getdata) {
            return getdata;
        }
    }).responseText;
    chart = new AmCharts.AmStockChart();
    chart.pathToImages = "http://www.amcharts.com/lib/images/";
    chart.dataDateFormat = "YYYY-MM-DD h:i:s";
    var obj = JSON.parse(firstData);
    for(i=0;i<obj.length;i++) {
        var id_something = obj[i]['id'];
        var secondData = $.ajax({
            type: 'POST',       
            url: baseurl+'action/charts/ANOTHER_SOME_FUNCTION',
            data: { id_something : id_something, value1 : value1, value2 : value2 },
            dataType: 'JSON',
            async: false,
            success: function(getdata) {
                return getdata;
            }
        }).responseText;
        var chartData = JSON.parse(secondData);
        var dataSet = new AmCharts.DataSet();
        dataSet.title = obj[i]['name'];
        dataSet.fieldMappings = [{
            fromField: "value",
            toField: "value"
        }, {
            fromField: "volume",
            toField: "volume"
        }];
        dataSet.dataProvider = chartData;
        dataSet.categoryField = "date";
        chart.dataSets.push(dataSet);
    }

    // first stock panel
    var stockPanel1 = new AmCharts.StockPanel();
    stockPanel1.showCategoryAxis = false;
    stockPanel1.title = "Valor";
    stockPanel1.percentHeight = 70;
    // graph of first stock panel
    var graph1 = new AmCharts.StockGraph();
    graph1.valueField = "value";
    graph1.comparable = true;
    graph1.compareField = "value";
    graph1.compareGraphBalloonText="[[value]] kwh"; //mostrar las unidades de medida en el balloon de las comparaciones
    graph1.balloonText= "[[value]] kwh"; //mostrar las unidades de medida en el balloon
    stockPanel1.addStockGraph(graph1);
    // create stock legend                
    stockPanel1.stockLegend = new AmCharts.StockLegend();
    stockPanel1.stockLegend.valueTextRegular="[[value]] kwh"; ////mostrar las unidades de medida en el legend
    // second stock panel
    var stockPanel2 = new AmCharts.StockPanel();
    stockPanel2.title = "Volumen";
    stockPanel2.percentHeight = 30;
    var graph2 = new AmCharts.StockGraph();
    graph2.valueField = "volume";
    graph2.type = "column";
    graph2.showBalloon = false;
    graph2.fillAlphas = 1;
    stockPanel2.addStockGraph(graph2);
    stockPanel2.stockLegend = new AmCharts.StockLegend();
    stockPanel2.stockLegend.valueTextRegular="[[value]] kwh"; ////mostrar las unidades de medida en el legend
    // set panels to the chart
    chart.panels = [stockPanel1, stockPanel2];
    // OTHER SETTINGS ////////////////////////////////////
    var scrollbarSettings = new AmCharts.ChartScrollbarSettings();
    scrollbarSettings.graph = graph1;
    scrollbarSettings.updateOnReleaseOnly = true;
    scrollbarSettings.usePeriod = "10mm";
    chart.chartScrollbarSettings = scrollbarSettings;
    var cursorSettings = new AmCharts.ChartCursorSettings();
    cursorSettings.valueBalloonsEnabled = true;
    chart.chartCursorSettings = cursorSettings;
    // PERIOD SELECTOR ///////////////////////////////////
    var periodSelector = new AmCharts.PeriodSelector();
    periodSelector.periods = [{
        period: "hh",
        count: 24,
        label: "ddd"
    }, {
        period: "hh",
        count: 48,
        label: "dd"
    }, {
        period: "hh",
        count: 120,
        label: "ddd"
    }, {
        period: "hh",
        count: 240,
        label: "dia"
    }, {
        period: "MAX",
        label: "MAX"
    }];
    chart.periodSelector = periodSelector;
    var panelsSettings = new AmCharts.PanelsSettings();
    panelsSettings.usePrefixes = true;
    chart.panelsSettings = panelsSettings;
    // DATA SET SELECTOR
    var dataSetSelector = new AmCharts.DataSetSelector();
    dataSetSelector.position = "left";
    chart.dataSetSelector = dataSetSelector;
    chart.write('chartdiv');
});

如果有人想要更多信息或有解决方案,那就太棒了!!!!谢谢

最佳答案

我确实遇到了同样的错误,解决方案非常简单:

在 amCharts 文件夹中,您将找到三个 .js 文件:“amcharts.js”、“amstock.js”和“serial.js”。

您必须确保将它们包含在您的 html 代码中按照这个严格的顺序(此处顺序很重要): amcharts.js、serial.js、amstock.js

就这些了;-)

关于php - Amcharts 构造未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19788169/

相关文章:

php - 使用ajax上传多文件以及表单提交

jquery - 根据设备动态分配jquery移动页面高度

javascript - 如何在不刷新索引页的情况下刷新 DIV

Amcharts 4 日期轴工具提示每周显示错误的日期(星期一而不是星期五)

javascript - Amcharts 如何在不重新加载整个图表的情况下将新图表数据推送到图表中?

javascript - Amcharts 从外部源(温度)为数据集添加值(value)

PHP:MY​​SQL 数组到 JSON 停止重复?

php - MySQL - 如何根据另一个表中的列进行排序

php - 如何使用 PHPMailer 将 HTML、CSS 和 PHP 添加到电子邮件中?

javascript - jQuery/sessionStorage : flicker effect on hidden element, 以编程方式隐藏