这是我的功能:
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个第一行,则一切正常,但在其他有字母的行上,给出了该错误。
真的停留在这里,任何帮助将不胜感激。
修改 这是我的表格的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>
我正在使用的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