【问题标题】:Codeigniter return Json from controller to dynamic table in view via Ajax requestCodeigniter 通过 Ajax 请求将 Json 从控制器返回到视图中的动态表
【发布时间】:2017-11-23 05:19:47
【问题描述】:

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

这是错误信息:-

DataTables 警告:表 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));
        }
    });
});

【问题讨论】:

  • 不应该是var names = feedback; 吗??
  • 请发布您的表格字段名称,以便我可以帮助您。
  • 抱歉,我需要将它附加到视图中。我更新了它。阿金通德
  • order_list 是 html NikuNj Rathod 中表的 id

标签: php jquery json ajax codeigniter


【解决方案1】:

您需要 print() 或 echo json 而不是 return 它。

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

【讨论】:

  • 我更改了它,但它出现了相同的错误消息:- DataTables 警告:表 id=order_list - 无效的 JSON 响应。有关此错误的更多信息,请参阅datatables.net/tn/1
【解决方案2】:

您确实没有有一个有效的 JSON 响应。

在此处复制并粘贴您的 JSON:

https://jsonlint.com/

您会发现您的问题是您的图像标签缺少正确的引号。甚至把 Stack Overflow 的代码高亮弄糊涂了。

【讨论】:

  • 我在这里和这里编辑了我的 json,我需要从控制器生成这样的 json。但是当我加载 html 时,响应以 html 的形式出现。
猜你喜欢
  • 2017-09-06
  • 1970-01-01
  • 2013-11-01
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
相关资源
最近更新 更多