Javascript 无法读取DataTable.js中未定义错误的属性“length”

Javascript 无法读取DataTable.js中未定义错误的属性“length”,javascript,datatable,Javascript,Datatable,我已经阅读了所有关于这个话题的文章,但最终还是得到了一些答案 未捕获的TypeError:无法读取未定义的属性“length” 在Chrome和Internet Explorer中。我创建了一个名为DataTable.js的空文件,并从中复制粘贴了代码 然后,我在构建表的代码末尾添加了以下行: $('#standard_report_table').DataTable(); 我的脚本: var buildStandardReportTable = function() {

我已经阅读了所有关于这个话题的文章,但最终还是得到了一些答案

未捕获的TypeError:无法读取未定义的属性“length”

在Chrome和Internet Explorer中。我创建了一个名为DataTable.js的空文件,并从中复制粘贴了代码

然后,我在构建表的代码末尾添加了以下行:

 $('#standard_report_table').DataTable();
我的脚本:

    var buildStandardReportTable = function()
    {
        var divContent = "";

        var url = "/InputData/db_getSqlQueryResult";

        $.ajax({
            url: url,
            type: "POST",
            async: false,

            data: { sqlStr: "SELECT id, name_rus, visual_level, children_number, parent_id, effect_on_parent_id, lft, rgt, children_are_visible, report_type_id, font_color " +
                            "FROM report_entries_template_standard " + 
                            "WHERE visible = 1 AND report_type_id = " + $("#reportTypeCombobox").val() + ' ' +
                            "ORDER BY lft", connectionStr: "dbCon"},

            success: function (data)
            {

                var divContent = '';
                var obj = jQuery.parseJSON(data);           
                divContent = buildStandarReportContent(obj);

                //$('#choosenav1')[0].style.display = "block";
                //$('#choosenav2')[0].style.display = "block";
                //$('#choosenav3')[0].style.display = "block";

                $("#standard_report_table").html(divContent);
                $('#standard_report_table').DataTable();
            }
        })
    }
var buildStandarReportContent = function (obj)
{
    var divContent = '<thead border="0"><tr>';
    divContent += '<th style="width: 30px"></th>';
    divContent += '<th style="width: 30px"></th>';
    divContent += '<th style="width: 30px"></th>';
    divContent += '<th style="width: 30px"></th>';
    divContent += '<th style="width: 30px"></th>';
    divContent += '<th style="width: 30px"></th>';
    divContent += '<th style="width: 30px"></th>';
    divContent += '<th style="width: 1000px;">Статья</th>';
    divContent += '<th>ID</th>';
    divContent += '</tr></thead>';
    // Table content

    divContent += '<tbody id="table_data">';         

    for (i = 0; i < obj.length; i++) 
    {
        //'<tr class="' + (obj[i].Уровень == 1 ? "success" : "")
        //+ (obj[i].Уровень == 2 ? "warning" : "") + '"><td style="vertical-align: middle"><div style="margin-left:' + (obj[i].Уровень - 1) * 20 + 'px">' + obj[i].Статья_название + '</div></td>';
        divContent += '<tr style="height: 10px; background-color:' + obj[i].font_color + '" ' +
                           'onmouseover = "setElementsVisibility(' + i + ', 1)" ' +
                           'onmouseout = "setElementsVisibility(' + i + ', 0)">';

        divContent += '<td><div id = "add_child_sign' + i + '" style = "display : none";"><img src= "/Content/pics/plus_sign1.png" ' +
                                        'style= "height:10px;width:10px;cursor:pointer" ' +
                                        'onclick = "openAddNewChildWindow(' + obj[i].id + ')"</div></td>';
        divContent += '<td><div id = "delete_sign' + i + '" style = "display : none";"><img src= "/Content/pics/delete_sign1.png" ' +
                                        'style= "height:10px;width:10px;cursor:pointer" ' +
                                        'onclick = "deleteChild(' + obj[i].id + ')"</div></td>';
        divContent += '<td><div class = "glyphicon glyphicon-triangle-top" varia-hidden="true" id = "arrowup' + i + '" style = "' +
                                        'height:10px;width:10px;cursor:pointer; color:red" ' +
                                        'onclick = "swapChild(' + obj[i].id + ', \'up\')"></div>';
        divContent += '<td><div class = "glyphicon glyphicon-triangle-bottom" id = "arrowdown' + i + '" style = " ' +
                                        'height:10px; width:10px; cursor:pointer" ' +
                                        'onclick = "swapChild(' + obj[i].id + ', \'down\')"></div></td>';
        divContent += '<td><div id = "arrowleft' + i + '" style = "display : none";"><img src= "/Content/pics/arrowleft_sign1.png" ' +
                                        'style= "height:10px;width:10px;cursor:pointer" ' +
                                        'onclick = "editVisualLevel(' + obj[i].id + ', \'left\')"</div></td>';
        divContent += '<td><div id = "arrowright' + i + '" style = "display : none";"><img src= "/Content/pics/arrowright_sign1.png" ' +
                                        'style= "height:10px;width:10px;cursor:pointer" ' +
                                        'onclick = "editVisualLevel(' + obj[i].id + ', \'right\')"</div></td>';

        divContent += '<td><div id = "edit_sign' + i + '" style="display: none;"><div style = "vertical-align:bottom"><img src= "/Content/pics/edit_sign1.png" ' +
                                        'style= "height:10px;width:10px;cursor:pointer" ' +
                                        'onclick = "openEditChildWindow(' +
                                        obj[i].id + ',\'' + obj[i].name_rus + '\',\'' + obj[i].name + '\',' + obj[i].effect_on_parent_id + ',' +
                                        obj[i].parent_id + ',' + obj[i].report_type_id + ')"</div></td>';

        divContent += '<td><div class = "cell_level_' + obj[i].visual_level + '" style = "margin-left : ' + 30 * (obj[i].visual_level - 1) + 'px; ' +
                                   'cursor:' + (obj[i].children_number == 0 ? "default" : "pointer") + '" ' +
                                   'onclick="collapseTreeNode(' + obj[i].lft + ',' + obj[i].rgt + ',' + obj[i].children_are_visible + ','+ obj[i].children_number + ')">';
        divContent += obj[i].name_rus + '<span style="color:#A0A0A0; font-weight: normal;">&nbsp(' + obj[i].children_number + ')</span></div></td><td>' + obj[i].id + '</td><tr>';

    }

    divContent += '</tbody>'
    divContent += '</table>';
    return divContent;
}
HTML:

这样使用

var obj = jQuery.parseJSON(data);
$('#standard_report_table').DataTable({
    "ajax": obj
});
定义html

<table id="standard_report_table" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th></th>
                <th></th>
                <th></th>
                <th></th>
                <th></th>
                <th></th>
            </tr>
        </thead>
    </table>

请出示您的脚本请回答您的问题,并将代码与实际使用长度属性的部分一起发布。此外,请将标记发布到定义标准报告表的位置。请查找随附的代码@里亚杰·汗,我不明白你为什么把这个问题降级。这个错误实际上是在DataTable.js本身中引发的,并且长度似乎没有出现在我的代码中。不管怎样……如果能在这方面得到任何帮助,我将不胜感激。@EdgarNavasardyan你不知道是谁否决了你。请注意,所有这些评论和可能的否决票都发生在您的问题包含任何代码或有用的细节之前。Downvotes或close votes在当时是完全合适的。长度错误现在已经解决,但是我收到了一条关于无效JSON对象的警告,建议访问,尽管my对象在绑定DataTable之前工作得很好,并且它还通过了验证测试,请粘贴您的JSON[{id:983,name_-rus:EVA,visual_-level:1,children_-number:3,parent_-id:null,对parent_-id:2的影响,lft:1,rgt:162,children_-is-visible:true,report_-type_-id:1,font_-color:null,{id:985,name_-rus:NOPLAT,visual_-level:2,children_-id:4,parent_-id:983,effect_-on-parent_-id:2,lft:107,childrent-visible,report-id:1]看看这个例子。
<table id="standard_report_table" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th></th>
                <th></th>
                <th></th>
                <th></th>
                <th></th>
                <th></th>
            </tr>
        </thead>
    </table>