Javascript jQuery-在ajax post成功加载新数据之前清除HTML表
嗯。以这种方式操作DOM不是最好的方法:Javascript jQuery-在ajax post成功加载新数据之前清除HTML表,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,嗯。以这种方式操作DOM不是最好的方法: <div class="container" id="assignPackage"> <table class="table table-striped table-bordered" id="packageTable"> <thead> <tr> <th>ID</th> <th&g
<div class="container" id="assignPackage">
<table class="table table-striped table-bordered" id="packageTable">
<thead>
<tr>
<th>ID</th>
<th>Package Name</th>
</tr>
</thead>
<tbody data-bind="foreach: records">
<tr>
<td data-bind="text:packageId" > </td>
<td data-bind="text:packageName"> </td>
</tr>
</tbody>
</table>
<br><br>
</div>
如果表数据很长,我建议您使用动态插件(如jquery datatables)。尝试放置$('#packageTable tr')。remove()在成功函数中调用ko.applyBindings
之前的代码>:
success: function(data) {
$('#assignPackage').hide();
console.log(packages); console.log(group);
ko.applyBindings({
records : JSON.parse(data.packages)
});
$('#assignPackage').show();
},
函数生成器列表(id)
{
var groupId={“group_id”:id};
$.ajax({
类型:“POST”,
数据:groupId,
url:“应用程序\用户/seeGroup”,
数据类型:“json”,
成功:功能(数据){
console.log(包);console.log(组);
$('#packageTable tr')。删除();
ko.applyBindings({
记录:JSON.parse(data.packages)
});
},
错误:函数(错误){
警报(error.status+“”+error.statusText);
}
});
};
根据您的评论,我认为您需要做的就是在设置新值之前清除所有文本
在调用ko.applyBindings之前调用此命令:
function generateList(id)
{
var groupId = {"group_id" : id};
$.ajax({
type: "POST",
data: groupId,
url: "<?= base_url() ?>apps_users/seeGroup",
dataType: "json",
success: function(data) {
console.log(packages); console.log(group);
$('#packageTable tr').remove();
ko.applyBindings({
records : JSON.parse(data.packages)
});
},
error: function(error) {
alert(error.status + "<--and--> " + error.statusText);
}
});
};
这将清除表#packageTable下所有td的所有文本(以及所有子元素)。您正在使用Knockout绑定Json
你能发布你的淘汰码吗
或在负重时使用
$("#packageTable").find("td").html('');
在ajax成功事件中,只需使用
$(document).ready(function(){
var records = {packageId:'',packageName'' };
ko.applyBindings(records);
});
其中records是javascript的全局变量。不工作。在您的解决方案中,整个assignPackage div在下拉更改中被隐藏。不起作用。使用您的解决方案,在下拉更改时删除表的tr。该表是用静态HTML代码编写的,还是在ko.applyBindings()函数中创建的?表是用静态HTML代码编写的,在ajax post成功后,我将数据绑定到表中。正如您所看到的,我使用数据绑定到每个td@worldfs,但它没有清除任何内容。。。如果我在JSFIDLE中尝试更改DropDown,旧数据仍然存在,并且它可以工作。。。所以我猜可能还有一些函数在控制这个表?这可能吗?你能提供JSFIDLE链接吗?不,它不工作。。。。实际上,我在下拉更改时调用了一个javascript函数,该函数正在启动一个ajax post,在ajax post成功后,我将使用来自ajax post响应的数据将数据绑定到html表。这就是整个场景。我不可能在JSFIDLE中调用ajax。。。您可以将我的JSFIDLE中的$(function(){})视为ajax响应,该代码将清除td中的文本。也许你可以发布applyBindings函数的代码,我认为这个函数可能有问题。是的,我正在使用knockout js绑定json,我已经在上面发布了我的全部代码。这是因为您多次使用ko.applyBindings,即,每当您更改下拉选项时。我已经编辑了ajax帖子的成功函数。。。。。现在我该如何解决这个问题。我的意思是把ko.applyBindings放在哪里以得到我想要的结果。更改的代码请检查。使用文件准备代码,即车身载荷。这是我的全部代码。你现在能推荐我吗
$("#packageTable").find("td").html('');
$(document).ready(function(){
var records = {packageId:'',packageName'' };
ko.applyBindings(records);
});
records = JSON.parse(data.packages);