jQuery DataTables在404 ajax响应中没有显示结果消息

时间:2015-09-28 00:06:46

标签: jquery ajax datatables

我正在使用DataTables:

$t = $('#users-table').DataTable({
    'paging'    : true,
    'searching' : true,
    'ordering'  : false,
    'info'      : false,
    'serverSide': true,
    'processing': true,
    'ajax'      : {
        'url'   : 'http://localhost/api/users',
        'type'      : 'GET',
        'dataSrc'   : 'users',
        'error': function() {
              // how can i handle the 404 response and show the no results found message?
        }
    }
    ...

如果查询没有结果,服务器将返回404未找到的响应。我正在尝试显示无结果消息并从表中删除当前数据,但相反,数据将在表中保持相同的错误响应。

编辑:

我正在使用这样的搜索功能:

$('#data-filter').keyup(function() {
  $t.search($(this).val()).draw();
});

因此,如果未找到查询字的结果,则返回404。

2 个答案:

答案 0 :(得分:5)

  

重要

当没有结果时,返回404错误几乎没有任何意义。有关原因,请参阅this excellent answer

最好将脚本编程为将空数组作为data参数的值返回,并指出没有结果(recordsFiltered)和结果集的总大小(recordsTotal ),有关详细信息,请参阅Returned data

  

解决方法

但是,您可以使用ajax选项取消警告消息并清除错误表格,如下所示:

"ajax": {
    'url': 'http://localhost/api/users',
    'type': 'GET',
    'dataSrc': 'users',
    'error': function(jqXHR, textStatus, errorThrown){
        $('#example').DataTable().clear().draw();
    }           
},
  

<强>样本

请参阅this jsFiddle以获取代码和演示。

答案 1 :(得分:2)

  

您应该修复服务器端代码,以便在返回零行时返回零行。

  • A&#39; 404&#39; HTTP状态代码保留用于Web资产或实体未找到&#39;。
  • 的情况
  • 在这种情况下,找到了您的实体,但没有任何东西可以归还。
  • 这是一个不同的场景,而且#404;&#39; 404&#39;错误代码不正确,无异于直接的技术债务。