Codeigniter通过Ajax请求将Json从控制器返回到动态表

时间:2017-11-23 05:19:47

标签: php jquery json ajax codeigniter

我从Magento database获取数据,我需要将其作为Json object返回,并将数据添加到视图中的表中。我得到了一个html响应,而不是一个有效的json。

这是错误消息: -

  

DataTables警告:table id = order_list - 无效的JSON响应。对于   有关此错误的更多信息,请参阅   http://datatables.net/tn/1

这是我的控制器代码:

public function prepareJson(){

    $orders = Mage::getModel('sales/order')->getCollection()->setOrder('created_at', 'DESC')->setPageSize(25);
    $total_records = $this->orderModObj->get_total();
    $tableData = array();

    $jsonObj =new \stdClass();
    $jsonObj->sEcho = 5;
    $jsonObj->iTotalRecords = $total_records;
    $jsonObj->iTotalDisplayRecords = $total_records;

    foreach ($orders as $ordercus) {
        array_push($tableData, $ordercus);
    }
    $jsonObj->aaData = array($tableData);

    $tableJSON = json_encode($jsonObj);
    return $tableJSON;
}

这是我的观看代码

<table id="order_list" class="table table-bordered table-striped" data-page-length="25">

这是json结构

{
"sEcho": "5",
"iTotalRecords": 2708,
"iTotalDisplayRecords": 2708,
"aaData": [
    ["300000374", "16-11-2017", "16-11-2017", "title ", "charith m ", "<img src=\"http:\/\/mysite.lk\/dif.gif\" class=\"image\" alt=\"profile picture\">charith", "AUD 100.00", "<div class=\"processing\">Processing<\/div>", "<a class=\"tb-edit\" href=\"http:\/\/mysite.lk\/view\/300000374\">View <\/a>"]

]
}

这是javascript代码

$(document).ready(function() {

$('#order_list').DataTable( {

    "processing": true,
    "serverSide": true,

    url: BASE_URL + 'order/prepareJson',
    method: 'post',
    data: { get_param: 'value' },
    dataType: 'json'
    //"ajax": " "
} );
$.ajax({
    success: function (feedback) {
        //console.log("feedback", feedback);
        $("#order_list").append($(feedback));
        }
    });
});

2 个答案:

答案 0 :(得分:0)

你需要print()echo json,而不是return

$table_json = json_ecode($data);
echo $table_json; 

答案 1 :(得分:0)

有一个有效的JSON响应。

将JSON复制并粘贴到此处:

https://jsonlint.com/

您会发现您的问题是图片标记缺少正确的引号。甚至使Stack Overflow的代码高亮显示混乱。