莫里斯图表错误时,通过AJAX从PHP传递JSON数据


Morris chart error when passing JSON data from PHP via AJAX

我有来自数据库的数据,我通过json_encode使用以下代码:

$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));

输出:

{"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"}]}
这是我的Javascript代码:
$.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");
    }
});

返回以下错误:

Uncaught TypeError: Cannot read property 'x' of undefined

为什么会发生这种情况?

问题在于我如何在PHP中构建JSON数据。下面是代码:

foreach ($orderList as $order) {
    $arr[] = array(
        'd'     => ''.$order['createdDate'].'',
        'sales' => ''.$order['order_price'].'',
    );
}
echo json_encode($arr);