最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Google chart: “Uncaught (in promise) Error: Unknown header type: 4.7278” error - Stack Overflow

programmeradmin2浏览0评论

I'm trying to display a line chart of currency rates via google charts.

Basically i have 2 type of values:

  1. Date (format iso8601)
  2. Rate (decimal number)

when i'm trying to render the chart i get an error: "Uncaught (in promise) Error: Unknown header type: 4.7278”

Here is my code:

PHP array making:

        $xml=simplexml_load_file('.xml') or die("Error: Cannot create object");
    $arrayForChart[] = ["Date","Rate"];
    foreach ($xml->DataSet->Series->Obs as $key => $value) {
        $dateIso8601Format=(string)$value['TIME_PERIOD'];
        $rateForDate=(string)$value['OBS_VALUE'][0];
        $rateForDate=(float)$rateForDate;
        $arrayForChart[] = [$dateIso8601Format,$rateForDate];
    }
    $arrayForChart = json_encode($arrayForChart);

Javascript

var arrayForChart;
$.ajax({
    type: "POST",
    url: ajaxUrl,
    //data: {configuration: Config },
    success: function (data) {

        arrayForChart = data;
        arrayForChart = $.map(arrayForChart, function (el) {
            return el;
        });//converting js object to js array

    },
    cache: false
});
google.charts.load("current", {packages: ["corechart", "line"]});
google.charts.setOnLoadCallback(drawLineColors);

function drawLineColors() {

    var data = google.visualization.arrayToDataTable([arrayForChart]);

    var options = {
        hAxis: {
            title: "Rate",
            id: "Rate",
            label: "Rate",
            type: "number"
        },
        vAxis: {
            title: "Date",
            id: "Date",
            label: "Date",
            type: "string"
        },
        colors: ["#a52714", "#097138"]
    };

    var chart = new google.visualization.LineChart(document.getElementById("chart_div"));
    chart.draw(data, options);
}

Sample of data:

["Date","Rate","2011-01-03",4.7278,"2011-01-04",4.7301,"2011-01-05",4.6814,"2011-01-06",4.6635]

Anybody might know what is the problem?

Many thanks!

I'm trying to display a line chart of currency rates via google charts.

Basically i have 2 type of values:

  1. Date (format iso8601)
  2. Rate (decimal number)

when i'm trying to render the chart i get an error: "Uncaught (in promise) Error: Unknown header type: 4.7278”

Here is my code:

PHP array making:

        $xml=simplexml_load_file('https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/usd.xml') or die("Error: Cannot create object");
    $arrayForChart[] = ["Date","Rate"];
    foreach ($xml->DataSet->Series->Obs as $key => $value) {
        $dateIso8601Format=(string)$value['TIME_PERIOD'];
        $rateForDate=(string)$value['OBS_VALUE'][0];
        $rateForDate=(float)$rateForDate;
        $arrayForChart[] = [$dateIso8601Format,$rateForDate];
    }
    $arrayForChart = json_encode($arrayForChart);

Javascript

var arrayForChart;
$.ajax({
    type: "POST",
    url: ajaxUrl,
    //data: {configuration: Config },
    success: function (data) {

        arrayForChart = data;
        arrayForChart = $.map(arrayForChart, function (el) {
            return el;
        });//converting js object to js array

    },
    cache: false
});
google.charts.load("current", {packages: ["corechart", "line"]});
google.charts.setOnLoadCallback(drawLineColors);

function drawLineColors() {

    var data = google.visualization.arrayToDataTable([arrayForChart]);

    var options = {
        hAxis: {
            title: "Rate",
            id: "Rate",
            label: "Rate",
            type: "number"
        },
        vAxis: {
            title: "Date",
            id: "Date",
            label: "Date",
            type: "string"
        },
        colors: ["#a52714", "#097138"]
    };

    var chart = new google.visualization.LineChart(document.getElementById("chart_div"));
    chart.draw(data, options);
}

Sample of data:

["Date","Rate","2011-01-03",4.7278,"2011-01-04",4.7301,"2011-01-05",4.6814,"2011-01-06",4.6635]

Anybody might know what is the problem?

Many thanks!

Share Improve this question asked Jul 4, 2017 at 22:02 codingnighter2000codingnighter2000 5291 gold badge7 silver badges26 bronze badges 1
  • 1 check out this full example... – WhiteHat Commented Jul 4, 2017 at 23:12
Add a ment  | 

4 Answers 4

Reset to default 3

Google charts expects an array of arrays. You appear to be providing it with one flat array. Eg

Array('date', 'value', 1,2,3,4);

Should be

Array(
    Array(date, value),
    Array(1, 2),
    Array(3, 4)
);

Faced Same issue in ASP.Net resolved by changing this chartData.Add(new object[] { "Post", "Total" }); Mistake you are doing is you are giving rows but not header/column name

**List<object> chartData = new List<object>();
    chartData.Add(new object[]
{
    "Post", "Total"
});
    foreach (DataRow dtrow in dt.Rows)
    {
        chartData.Add(new object[]
                 {
                     dtrow[0].ToString(), Convert.ToInt32(dtrow[1])
                 });
    }**

don't forget to add a ma right after you define the column names. That was the problem in my case.

function drawChart1() {
  var data = new google.visualization.arrayToDataTable([
    ['Month', 'Total claims'],
          <?php
    if(mysqli_num_rows($sqlclaims) > 0){
       while ($row = mysqli_fetch_assoc($sqlclaims)){
           echo "['".$row['FINANCIAL_']."', ".$row['tot_claims']."],";
           }
       }
  ?>
  ]);

I had the same issue with angular-google-charts. The ponent was initialized with empty array, then it was passed when the data is ready.

I solved it using *ngIf on the chart ponent with a flag set to false, and set it to true when the data is ready.

发布评论

评论列表(0)

  1. 暂无评论