通过AJAX从PHP传递JSON数据时出现Morris图表错误
问题描述:
I have data from a database that I put through json_encode
with the following code:
$orderList = $this->Retrieve->retrieve_data('*');
$data = array();
foreach ($orderList as $order) {
array_push($data, array(
'd' => $order['createdDate'],
'sales' => $order['order_price']
));
}
echo json_encode(array('data' => $data));
This is the output:
{"data":[{"d":"2015-09-26","sales":"0.00"},{"d":"2015-09-26","sales":"200.00"},{"d":"2015-09-26","sales":"45.00"},{"d":"2015-09-26","sales":"1500.00"}]}
And this is my Javascript code:
$.ajax({
url: baseURL + '/Memberinfo/getGraphicalActivity',
cache: false,
type: "POST",
data: {patientFK: $("#patientFK").val()},
dataType: "json",
timeout:3000,
success : function (data) {
memberArea = new Morris.Line({
element: 'line-chart-memberInfo',
data: data,
xkey: 'd',
ykeys: ['sales'],
labels: ['Sales'],
smooth: false,
parseTime:false,
resize: true
});
},
error : function (xmlHttpRequest, textStatus, errorThrown) {
alert("Error " + errorThrown);
if(textStatus==='timeout')
alert("request timed out");
}
});
It returns this error:
Uncaught TypeError: Cannot read property 'x' of undefined
Why is this happening?
答
The issue was in how I was building my JSON data in PHP. Here's the code:
foreach ($orderList as $order) {
$arr[] = array(
'd' => ''.$order['createdDate'].'',
'sales' => ''.$order['order_price'].'',
);
}
echo json_encode($arr);