Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery DataTables with Node.js_Javascript_Jquery_Node.js_Datatables_Jquery Datatables - Fatal编程技术网

Javascript jQuery DataTables with Node.js

Javascript jQuery DataTables with Node.js,javascript,jquery,node.js,datatables,jquery-datatables,Javascript,Jquery,Node.js,Datatables,Jquery Datatables,所以我尝试用datatables插件实现分页表,这是我第一次使用这个插件。我按照插件文档的说明,尝试通过使用Ajax从服务器获取值,如插件文档中所示 一旦我发出get请求,我似乎会出现以下错误,我不确定原因是什么 错误:未捕获类型错误:无法读取未定义的属性“长度” 在客户端,我有以下代码 viewReports = { init: function(){ $('#paginatedData').DataTable({ "processing": t

所以我尝试用datatables插件实现分页表,这是我第一次使用这个插件。我按照插件文档的说明,尝试通过使用Ajax从服务器获取值,如插件文档中所示

一旦我发出get请求,我似乎会出现以下错误,我不确定原因是什么

错误:未捕获类型错误:无法读取未定义的属性“长度”

在客户端,我有以下代码

viewReports = {
    init: function(){
        $('#paginatedData').DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": '/viewreports'
        });

    }
};

$(document).ready(viewReports.init);
在我的服务器端,我有以下内容

router.get('/viewreports', function(res, req){

    async.parallel({
        viewReports: function(callback){
            restCall('/rest/bugbounty/latest/message/searchReport', 'POST', parameters, function(data){
                callback(null, data);
            }); 
        }
    }, function(err, result){
        if(!err){
            res.send(result.viewReports);
            res.render('viewreports');
        }
    });
});
返回的JSON:

{reportList:[{reportID:'EIBBP-448',eBayUserID:'',reportStatus:'New',summary:'BugBounty Report created by Raj',LastUpdateDate:'2015-06-15 01:05',createdDate:'2015-06-15 01:05',paypalLoginID:'raaj@paypal.com' } ],searchStatus:'Success',eBayUserID:'',错误代码:'0',行数:'6',页码:'1',分页值:'1',paypalLoginID:'raaj@paypal.com“}

如果知道是否有人使用过node.js服务器端数据表处理,那就太好了。您需要定义和-以下内容应该可以使用:

var table=$('#示例').DataTable({
处理:对,
服务器端:是的,
阿贾克斯:{
url:“/viewreports”,
dataSrc:“报告列表”
},    
列:[
{数据:“报告ID”},
{数据:“eBayUserID”},
{数据:“报告状态”},
{数据:“摘要”},
{数据:“LastUpdateDate”},
{data:“createdDate”},
{数据:“paypalLoginID”}
]     
}); 
在一张空桌子上:


  • dataSrc
    指定包含行项目的数组的名称(导致“无法读取未定义的属性‘长度’”)
  • columns.data
    将项目属性映射到列

    • 您不必为服务器端处理而烦恼。 我使用了一种简单的方法来欺骗
      dataTables
      初始化

      首先,您需要通过最喜欢的方式获取要在表中显示的数据,在确认数据显示良好后,现在前往初始化
      dataTables
      的位置,并使其在初始化之前延迟

      setTimeout(() => {
          $('#yourtable').dataTable({
              // datatables customization options
          });
      }, 100)
      

      例如,在我的例子中,我给它一个100毫秒的延迟,它就像一个符咒一样工作。

      在服务器端处理模式下,服务器端代码应该以JSON格式返回数据,如前所述。请发布服务器返回的JSON文件。因此,我没有保存JSON数据的特定文件,但在呈现路由“/viewreports”时,我可以在控制台{reportList:[{reportID:'EIBBP-448',eBayUserID:'',reportStatus:'New',summary:'BugBounty Report created by Raj',LastUpdateDate:'2015-06-15 01:05',createdDate:'2015-06-15 01:05',paypalLoginID:'raaj@paypal.com' } ],searchStatus:'Success',eBayUserID:'',错误代码:'0',行数:'6',页码:'1',分页值:'1',paypalLoginID:'raaj@paypal.com' }我是否需要对上述json值进行字符串化?对于服务器端处理模式,您的响应不正确,请阅读以了解更多详细信息和数据格式。是的,您需要以json格式返回字符串。