admin管理员组文章数量:1313067
I'm trying to display a line chart of currency rates via google charts.
Basically i have 2 type of values:
- Date (format iso8601)
- 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:
- Date (format iso8601)
- 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
4 Answers
Reset to default 3Google 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.
本文标签: javascriptGoogle chart “Uncaught (in promise) Error Unknown header type 47278” errorStack Overflow
版权声明:本文标题:javascript - Google chart: “Uncaught (in promise) Error: Unknown header type: 4.7278” error - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741950294a2406668.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论