【问题标题】:Datatable error for empty ajax response空 ajax 响应的数据表错误
【发布时间】:2013-03-05 00:54:58
【问题描述】:

我在我的项目中使用 Datatable 1.9.2。我通过 AJAX 在其中显示申请人列表。还有一个过滤器表单,用于过滤数据。一切正常,但问题是,如果我过滤记录并且 DB 没有返回数据,那么数据表会在 POPUP 中生成错误。有人可以指导我如何使用数据表处理空 ajax 响应,如何处理空数据集。

下面是我正在使用的代码

    $('#applicants_list').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sPaginationType": "bootstrap",                 
"sDom": '<"H"Cfr>t<"F"ip>',
"oColVis": {
     "activate": "mouseover",
     "aiExclude": [ 10 ],
     "sAlign": "left"
},
"bFilter": false,
"sAjaxSource": script.php,
"aoColumns": [                               
       {"bSortable": true }, // attachments
       {"bSortable": true }, //Subject Line
       {"bSortable": true }, // Date Sent
       {"bSortable": true }, // File Name
       {"bSortable": false },
       {"bSortable": false },
       {"bSortable": true },
       {"bSortable": true },
       {"bSortable": true },
       {"bSortable": false }
],
"aaSorting": [[0, 'desc']]
} );

【问题讨论】:

  • 好问题。 +10

标签: ajax datatable


【解决方案1】:

当过滤器返回记录为空时,只需从服务器/ajax响应中返回以下数据,它将显示空记录消息。

echo '{
    "sEcho": 1,
    "iTotalRecords": "0",
    "iTotalDisplayRecords": "0",
    "aaData": []
}';

【讨论】:

  • 我有一个微调器,显示为 spinner.spin(target);并以 spinner.stop(); 停止。微调器在从服务器检索数据时显示,并在数据到达时停止。无论如何,即使像这个例子一样出现空数据,我也想停止微调器。我怎样才能做到这一点?
  • 好东西。对于较新的 DataTables(撰写本文时为 1.10),请使用 {"draw": 0, "recordsTotal": 0, "recordsFiltered": 0, "data":[]}
  • 惊人的答案。 +10。节省了我的时间
【解决方案2】:
echo json_encode(array('aaData'=>'')); 

为我工作。

【讨论】:

    【解决方案3】:

    对于那些正在寻找 ASP.NET 解决方案的人,这里有一个使用 JSON.NET 的示例:

    JObject jObj = new JObject(
        new JProperty("draw", 0),
        new JProperty("recordsTotal", 0),
        new JProperty("recordsFiltered", 0),
        new JProperty("data", new JArray())
    );
    
    return Content(jObj.ToString(Formatting.None), "application/json");
    

    此处其他答案中的参数适用于旧版本的 DataTables,但我认为它仍然可能与它们向后兼容,至少 aaData 是根据我在代码中看到的处理的。

    【讨论】:

      【解决方案4】:

      尝试对每个列对象使用 defaultContent 属性...

      PD:不需要双引号

      columns: [                               
             {bSortable: true, defaultContent: '' }, // attachments
             {bSortable: true, defaultContent: '' }, //Subject Line
             {bSortable: true, defaultContent: '' }, // Date Sent
             {bSortable: true, defaultContent: '' }, // File Name
             {bSortable: false, defaultContent: '' },
             {bSortable: false, defaultContent: '' },
             {bSortable: true, defaultContent: '' },
             {bSortable: true, defaultContent: '' },
             {bSortable: true, defaultContent: '' },
             {bSortable: false, defaultContent: '' }
      ],
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-20
        相关资源
        最近更新 更多