You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

删除记录后动态刷新Bootstrap模态框的技术问询

解决Bootstrap模态框删除文档后动态刷新列表的问题

你已经搞定了文档删除的核心功能,只差最后一步——删除后自动刷新模态框里的列表。我来一步步帮你实现这个效果:

1. 先封装列表加载逻辑(方便复用)

首先把原来加载文档列表的AJAX代码抽成独立函数,这样删除成功后直接调用它就能刷新列表了:

// 封装加载文档列表的函数
function caricaDocumenti(uid) {
    $('#content-dynamic').html('');
    $('#loader-modal').show();
    // 把当前用户ID存在模态框的data属性里,删除时要用到
    $('#modalDocumenti').data('uid', uid);
    
    $.ajax({
        url: 'temp/amministratore/getdocumenti.php',
        type: 'POST',
        data: 'id=' + uid,
        dataType: 'html'
    })
    .done(function(data) {
        $('#content-dynamic').html(data);
        $('#loader-modal').hide();
    })
    .fail(function() {
        $('#content-dynamic').html('<i class="glyphicon glyphicon-info-sign"></i> Qualcosa è andato storto, prova ancora...');
        $('#loader-modal').hide();
    });
}

$(document).ready(function() {
    // 原来打开模态框的逻辑,改成调用封装的函数
    $(document).on('click', '#getDocumenti', function(e) {
        e.preventDefault();
        var uid = $(this).data('id');
        caricaDocumenti(uid);
        $('#modalDocumenti').modal('show');
    });
});

2. 给动态生成的删除按钮绑定事件委托

因为删除图标是AJAX加载出来的动态内容,直接绑定点击事件会失效,得用事件委托:

另外注意:不要给多个删除按钮用同一个id="deleteFile",ID在页面里必须唯一!改成用class="deleteFile":

修改动态内容里的删除按钮代码:

<a onclick="return confirm('Sei sicuro di volere eliminare questo elemento?');" class="deleteFile" data-id="<?php echo $riga_doc["id"]; ?>" title="Cancella"><i class="fas fa-trash-alt"></i></a>

然后在JS里添加删除事件的逻辑:

$(document).ready(function() {
    // ... 原来的打开模态框逻辑 ...

    // 删除按钮的事件委托
    $(document).on('click', '.deleteFile', function(e) {
        e.preventDefault();
        if (confirm('Sei sicuro di volere eliminare questo elemento?')) {
            var fileId = $(this).data('id');
            // 从模态框的data属性里取出之前存的用户ID
            var uid = $('#modalDocumenti').data('uid');

            // 发送删除请求
            $.ajax({
                url: 'temp/amministratore/eliminaDocumento.php', // 你需要新建这个删除接口
                type: 'POST',
                data: 'id=' + fileId,
                dataType: 'json'
            })
            .done(function(risposta) {
                if (risposta.successo) {
                    // 删除成功,立刻刷新列表
                    caricaDocumenti(uid);
                } else {
                    alert('Errore durante l\'eliminazione: ' + risposta.messaggio);
                }
            })
            .fail(function() {
                alert('Qualcosa è andato storto durante l\'eliminazione, prova ancora...');
            });
        }
    });
});

3. 编写删除文档的PHP接口(eliminaDocumento.php)

新建这个文件,负责删除数据库记录和服务器上的物理文件(可选):

<?php
require_once '../../core/function.php';

if (isset($_REQUEST['id'])) {
    $fileId = intval($_REQUEST['id']);
    
    // 先获取文件路径,删除服务器上的文件(如果需要的话)
    $query = "SELECT file FROM upload_contratti WHERE id = $fileId";
    $risultato = $conn->query($query);
    if ($risultato->num_rows > 0) {
        $riga = $risultato->fetch_assoc();
        $percorsoFile = '../../uploads/' . $riga['file'];
        if (file_exists($percorsoFile)) {
            unlink($percorsoFile);
        }
    }
    
    // 删除数据库中的记录
    $queryElimina = "DELETE FROM upload_contratti WHERE id = $fileId";
    if ($conn->query($queryElimina) === TRUE) {
        echo json_encode(['successo' => true, 'messaggio' => 'Documento eliminato con successo']);
    } else {
        echo json_encode(['successo' => false, 'messaggio' => $conn->error]);
    }
} else {
    echo json_encode(['successo' => false, 'messaggio' => 'ID documento non specificato']);
}
?>

最后效果

现在用户点击删除图标并确认后,会自动发送删除请求,成功后立刻重新加载文档列表,模态框不用关闭再打开就能看到更新后的内容了。

内容的提问来源于stack exchange,提问作者M.Max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:58:21