Jquery数据表错误onclick

时间:2016-12-15 11:30:26

标签: jquery datatables

这是我的功能:

function getUsersOnDatabase(){
            $.ajax({
                type: "POST",
                url: "GetUsersOnDatabaseServlet",
                success: function (data) {
                    var jsonString = JSON.parse(data);
                    var $row;
                    //$("#users_table > tbody").find("tr").remove();

                    table.fnClearTable();

                    $.each(jsonString, function(k, v) { 
                        var newRow = table.fnAddData(['<i class="fa fa-times" style="cursor: pointer;" onclick="javascript:eraseUser('+v.id+')"></i>', '<a href="javascript:openEditUserForm('+v.id+')">'+v.id+'</a>', v.name, v.div, v.type]);
                        console.log("newRow "+newRow);
                        var oSettings = table.fnSettings();
                        console.log("oSettings "+oSettings);
                        var nTr = oSettings.aoData[ newRow[0] ].nTr;
                        console.log("nTr "+nTr);
                        nTr.id = v.id;
                        console.log("nTr.id "+nTr.id);
                    });

                    if($("#users_table > tbody > tr").length == 0){
                        $row = $('<tr><td colspan="4" class="text-center"><%=list.get("edit.users.table.null")%></td></tr>');
                        $('#users > tbody:last').append( $row);
                    }

                    return false;
                }
            });
}

解释这个函数的目的是什么,我正在使用Datatables插件创建一个表(如下图所示)。但前两列,当我点击它们时,转到一个函数并执行操作,就像在第一列中一样,单击“x”将消除该用户,而在第二列上将打开表格下方的表格编辑用户,使用ajax请求自动填充来自该用户的数据的输入字段。事情就是当我点击“x”时,我总是得到同样的错误:

  

TypeError:在未实现的对象上调用'insertCell'   interface HTMLTableRowElement。

当我点击第二列的字段时,据说要编辑,当该字段不仅是数字时,得到第一列的相同错误。例如,在下面的图像中,如果我点击要编辑的3个第一行,则一切正常,但在其他有字母的行上,给出了该错误。 Error

真的停留在这里,任何帮助将不胜感激。

修改 这是我的表格的html(包含在我的jsp文件中):

<div class="ibox-content">                      
   <div class="table-responsive">
        <table class="table table-striped table-bordered table-hover dataTables-example" id="users_table">
            <thead>
                 <tr>
                    <th class="colsm-1"><%out.println(list.get("edit.users.table.first.row")); %></th> 
                    <th><%out.println(list.get("edit.users.table.second.row")); %></th>   
                    <th><%out.println(list.get("edit.users.table.third.row")); %></th>
                    <th><%out.println(list.get("edit.users.table.forth.row")); %></th>
                    <th><%out.println(list.get("edit.users.table.fifth.row")); %></th>
                </tr>
            </thead>
            <tbody>
            </tbody>
        </table>
    <div class="col-sm-6 col-sm-offset-4" id="showFormButton">
        <button class="btn btn-primary col-sm-offset-1" type="submit" onclick="openForm();"><% out.println(list.get("edit.users.form.button.text"));%></button>
    </div>
</div>

这是从ajax请求返回的json: json_response

我正在使用的DataTables版本是1.10.12 的 EDIT2: 这是我的函数eraseUser,我想在点击“x”时删除用户。

function eraseUser(id){
          $.ajax({
              type: "POST",
              url: "DeleteAppUserAjaxService",
              data: {"userid":id},
              success: function (data) {
                  var jsonString = JSON.parse(data);
                  if(jsonString.resposta)
                  {
                        var table=$("#users_table").find("#"+id).remove();
                        if($("#users_table > tbody > tr").length == 0){
                            $row = $('<tr><td colspan="4" class="text-center"><%=list.get("edit.users.table.null")%></td></tr>');
                            $('#users_table > tbody:last').append($row);
                        }
                        swal({
                            title: '<%=list.get("edit.users.remove.success.swal.title")%>',
                            timeout: 2000,
                            type: "success"
                        });
                    }else{
                        swal({
                            title: '<%=list.get("edit.users.remove.error.swal.title")%>',
                            text:'<%=list.get("edit.users.remove.error.swal.text")%>',
                            timeout: 2000,
                            type: "error"
                        });
                    }
              }
          });
      }

分析我的jquery代码,我在这个小提琴上发布了我所有的jquery代码: fiddle jquery

0 个答案:

没有答案