可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I tried to populate google chart datatable in server side using PHP.I got JSON file properply, but the Chart not display in client Application. I got error-Data column(s) for axis #0 cannot be of type string . My coding is below here.
After fetching data from database,
$colarray=array(array("id"=>"","label"=>"userid","pattern"=>"","type"=>"number"),array("id"=>"","label"=>"name","pattern"=>"","type"=>"string")); $final=array(); for($i=0;$i<$rows;$i++) { $id[$i]=pg_fetch_result($res1,$i,'id'); $name[$i]=pg_fetch_result($res1,$i,'name'); $prefinal[$i]=array("c"=>array(array("v"=>$name[$i]),array("v"=>$name[$i]))); array_push($final,$prefinal[$i]); } $table['cols']=$colarray; $table['rows']=$final; echo json_encode($table);
My Output Json:
{ "cols":[ {"id":"","label":"userid","pattern":"","type":"number"}, {"id":"","label":"name","pattern":"","type":"string"} ], "rows":[ {"c":[{"v":"101"},{"v":"Aircel"}]}, {"c":[{"v":"102"},{"v":"Srini"}]}, {"c":[{"v":"103"},{"v":"Tamil"}]}, {"c":[{"v":"104"},{"v":"Thiyagu"}]}, {"c":[{"v":"105"},{"v":"Vasan"}]}, {"c":[{"v":"107"},{"v":"Senthil"}]}, {"c":[{"v":"108"},{"v":"Sri"}]}, {"c":[{"v":"109"},{"v":"Docomo"}]}, {"c":[{"v":"106"},{"v":"Innodea"}]} ] }
How to solve this issue?
回答1:
You specify type of userid as number... but pass string.. thats causing the problem.
I just wasted 30 mins with the opposite problem ...
Your output json should look like :-
{ "cols":[ {"id":"","label":"userid","pattern":"","type":"number"}, {"id":"","label":"name","pattern":"","type":"string"} ], "rows":[ {"c":[{"v":101},{"v":"Aircel"}]}, {"c":[{"v":102},{"v":"Srini"}]}, {"c":[{"v":103},{"v":"Tamil"}]}, {"c":[{"v":104},{"v":"Thiyagu"}]}, {"c":[{"v":105},{"v":"Vasan"}]}, {"c":[{"v":107},{"v":"Senthil"}]}, {"c":[{"v":108},{"v":"Sri"}]}, {"c":[{"v":109},{"v":"Docomo"}]}, {"c":[{"v":106},{"v":"Innodea"}]} ] }
回答2:
To extend on @sajal's accurate answer: Change the last line of your code from:
echo json_encode($table);
to:
echo json_encode($table, JSON_NUMERIC_CHECK);
This will tell json_encode to recognize numbers and abstain from wrapping them in quotes (Available since PHP 5.3.3.). http://php.net/manual/en/json.constants.php#constant.json-numeric-check
回答3:
In your drawChart() function, you are probably using google.visualization.arrayToDataTable, and this does not allow any nulls. Please use addColumn function explicitly
回答4:
On a BarChart, one of the columns (the second one) has to be a number. That can cause this error message.
回答5:
If the Data format should be like:
data: [ ["string", "string"], //first Column ["string1", number], ["string2", number], ["string3", number], ]
then you can overcome this error.