为什么这行会阻塞我的jQuery dataTable?

时间:2012-10-17 02:04:50

标签: javascript jquery datatables

我有一个jQuery dataTable编码如下:

$("#my-datatable").dataTable( {
    "bProcessing" : true,
    // Commenting out next line
    //"sDom" : 't',
    "sAjaxSource" : "some/url/on/my/server",
    "sAjaxDataProp" : "",
    "bDestroy" : true,
    "fnServerData" : function(sSource, aoData, fnCallback) {
        aoData.push({
            "name" : "asking",
            "value" : "yes"
        });

        request = $.ajax({
            "dataType" : "json",
            "type" : "GET",
            "url" : sSource,
            "data" : aoData,
            "success" : fnCallback
        });
    },

    "aoColumns" : [
        {
            "mDataProp" : "name"
        },
        {
            "mDataProp" : "expr"
        },
        {
            "mDataProp" : "seq"
        }
    ]
});

注意注释掉的行。当此代码按原样运行时,表格呈现精美。不幸的是,它显示了很多我不想要显示的内容,例如分页信息,搜索栏等。

在阅读完文档并按照示例后,我确信已注释掉的行是我需要配置dataTable以便只有表本身呈现/显示。

但是,当我发表评论时,我在Firebug中收到错误,并且没有数据填充我的表格:

TypeError: an is undefined
[Break On This Error]   

for ( var i=0, iLen=an.length ; i<iLen ; i++ )

似乎也在抱怨jQuery.dataTables.js第2895行。有人能说出为什么会发生这种情况吗?我的sDom属性配置不正确吗?请记住,我只想绘制表格及其标题(以及其中的所有数据)。提前谢谢!

2 个答案:

答案 0 :(得分:3)

设置"bProcessing": true时,您必须确保在'r'内定义sDom,否则将生成错误。

示例:

var oTable = $('#example').dataTable( {
    "bProcessing": true,
    "iDisplayLength": 10,
    "bLengthChange": false,
    "bFilter": false,
    "aoColumnDefs": [{ "bSortable": false, "aTargets": [ 0, 4, 5 ] }],  
    "sDom": "t<'row-fluid'<'span4'i><'span8'pP>r>",
    "sPaginationType": "bootstrap",
    "oLanguage": {  "sLengthMenu": "_MENU_ records per page"    }
});

答案 1 :(得分:1)

我认为你所追求的是这个或许

http://datatables.net/examples/basic_init/filter_only.html

你可以保留sDom:T(默认值)并手动关闭所有内容

            "bPaginate": false,
        "bLengthChange": false,
        "bFilter": true,
        "bSort": false,
        "bInfo": false,
        "bAutoWidth": false