ajax成功后无法删除表行

时间:2017-03-09 10:28:37

标签: javascript html-table

在我的html-php表中:

 <tr id="idrow">
                 <td><?php echo $user_id;  ?></td>
                 <td ><?php echo $user_name;  ?></td>
                 <td>
                     <input type="button" class="btn btn-danger btn-xs delete " value="Cancella sin id" onclick="deleteFunction(<?php echo $user_id;  ?>)"/>
                 </td>
</tr>

有一个按钮可以使用id字段通过ajax调用擦除sql行。 我的问题是在成功后更新表:

我的js代码是:

function deleteFunction(valor) {

    var $tr = $('#datatable-id').closest('tr'); 
    var id = valor;
    var parametros = {
                  "id"     : id
          };
          console.log(parametros);


          $.ajax({
                type: "POST",
                url: "deleteTabla.php", 
                data: parametros, 
                success: function(result){

                                  //$("#idrow").remove();
                                  $tr.remove();

                },
                error: function () {
                  console.log('ajax error');
                }

              });
}

使用$("#idrow").remove(),第一行被删除,而不是相关的按钮。

我认为诀窍在var $tr = $('#datatable-id').closest('tr');上,是对tr标签的引用?

感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

如果我理解正确,每行都有相同的id(idrow)。这是你的第一个错误。在整个页面中,Ids必须是唯一的。创建具有唯一ID的行并将其传递给函数:

<tr id="idrow_<?php echo $user_id; ?>">
    ...
    <td>
        <input type="button" onclick="deleteFunction('<?php echo $user_id; ?>')"/>
    </td>
</tr>

在你的功能中,只需这样做:

function deleteFunction(valor) {
    ...
    $('#idrow_'+valor).remove();
    ...
}

答案 1 :(得分:1)

tr最接近的#datatable-id将始终是第一行。 如果要删除特定行,请尝试分配ID。

 <tr id="<?php echo $user_id;?>">
   ....
 </tr>

然后在函数中:

function deleteFunction(valor) {
    var $tr = $('#' + valor);
    // delete after request is success
   $tr.remove()

}

答案 2 :(得分:0)

试试这个

<tr id="idrow_<?= $user_id ?>">

成功之处:

$("#idrow_" + valor).remove();

答案 3 :(得分:0)

将功能开头的选择器更改为:var $try = $("#idrow")