Uncaught error Not an array가 발생합니다. 여기 내 .html 파일이 있습니다.
<html>
<head>
<!-- Load jQuery -->
<script language="javascript" type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js">
</script>
<!-- Load Google JSAPI -->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", { packages: ["corechart"] });
google.setOnLoadCallback(drawChart);
function drawChart() {
var jsonData = $.ajax({
url: "json.php",
dataType: "json",
async: false
}).responseText;
var data = google.visualization.arrayToDataTable($parse.jsonData(jsonData));
var chart = new google.visualization.LineChart(
document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div" style="width: 900px; height: 500px;">
</div>
</body>
</html>
다음은 내 json file.php입니다.
include("dbconfig.inc.php");
$main= array();
$rows=array();
$cols=array();
$main['cols']=array(
array('label' => 'id', 'type' => 'string'),
array('label' => 'Q1', 'type' => 'string')
);
$main['rows']=array();
$sel = "SELECT * FROM mak";
try {
foreach($dbh->query($sel) as $r) {
$idd=$r['oid'];
$select = "SELECT * FROM pol WHERE id='".$idd."' ";
foreach($dbh->query($select) as $row) {
array_push($main['rows'],array('c' => array(
array('v' => $row['id']),
array('v' => $row['pol']),
)) );
}
}
}
catch(PDOException $e) {
echo $e->getMessage();
die();
}
echo json_encode($main);
?>
이 파일 출력은 다음과 같습니다. Google 차트에 필요한 것과 동일합니다. 문제가 어디인지 이해하지 못합니다. console.log ($ parse.JSON (jsonData)); json 객체가 콘솔에 표시됩니다.
{
"cols":
[
{"label":"id","type":"string"},
{"label":"Q1","type":"string"}
],
"rows":
[
{"c":[{"v":"1"},{"v":"123.0000"}]},
{"c":[{"v":"2"},{"v":"456.0000"}]}
]
}
arrayToDataTable()
들어오는 데이터가 배열이 아니기 때문에 호출 이 잘못되었습니다. DataTable()
대신 다음과 new
같이 메서드를 사용해야합니다 .
var data = new google.visualization.DataTable($parse.jsonData(jsonData));
또한 Q1 유형이 '숫자'로 변경되고 값도 사용되었습니다.
jsbin의 예 보기
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다