Javascript jQuery-在ajax post成功加载新数据之前清除HTML表

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

嗯。以这种方式操作DOM不是最好的方法:

<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);