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

如何将PHP动态ID传递至Bootstrap确认模态框并实现带ID跳转

问题:Bootstrap确认模态框无法传递PHP动态ID

点击表格中「移至回收站」按钮会弹出确认模态框,但点击模态框的「确认」按钮时,跳转链接无法携带对应ID,仅显示固定的删除接口路径。尝试过jQuery方案但没搞懂传递ID的逻辑。

触发模态框的按钮代码

<a class="dropdown-item" data-bs-toggle="modal" data-bs-target="#confirmation" data-id="<?=$val['id']?>"><i class="bx bx-trash me-1"></i> Move To Trashcan</a>

确认模态框代码

<div class="modal fade" id="confirmation" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog modal-sm" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel2">Confirmation</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        <div class="row">
          <div class="col mb-3">
            Are you sure want to delete this?
          </div>
          <p id="debug-url"></p>
        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">No</button>
        <button type="button" class="btn btn-primary btn-ok" onclick="window.location='http://localhost/NguyenTranTienHiep1/index.php/backend/delTempCat/'">Yes</button>
      </div>
    </div>
  </div>
</div>

渲染按钮的PHP循环代码

<?php
if ($data['category'] == NULL)
    echo "<td colspan='5' class='nothing'>THERE IS NOTHING TO SEE IN HERE!</td>";
else
    foreach($data['category'] as $val): ?>
    <tr>
        <td><i class="fab fa-angular fa-lg text-danger me-3"></i>
            <strong><?=$val['id']?></strong>
        </td>
        <td><?=$val['category_name']?></td>
        <td>
            <?php
            if($val['parent']==0)
            {
                echo "<i style='color:#7d8b9b;'>NULL</i>";
            }
            foreach($data['allCat'] as $val1)
            {
                if($val['parent'] == $val1['id'])
                {
                    echo $val1['category_name'];
                }
            }
            ?>
        </td>
        <td>
            <?php
            if ($val['status'] == 1)
                echo "<a href='".LINK."/backend/statusCat/".$val['id']."/0/'><span class='badge bg-label-primary me-1'>Active</span></a>";
            else
                echo "<a href='".LINK."/backend/statusCat/".$val['id']."/1/'><span class='badge bg-label-warning me-1'>Inactive</span></a>";
            ?>
        </td>
        <td>
            <div class="dropdown">
                <button type="button" class="btn p-0 dropdown-toggle hide-arrow"
                    data-bs-toggle="dropdown">
                    <i class="bx bx-dots-vertical-rounded"></i>
                </button>
                <div class="dropdown-menu">
                    <a class="dropdown-item"
                        href="<?=LINK?>/backend/editCat/<?=$val['id']?>"><i
                            class="bx bx-edit-alt me-1"></i> Edit</a>
                    <a class="dropdown-item"
                        href="<?=LINK?>/backend/delTempCat/<?=$val['id']?>"><i
                            class="bx bx-trash me-1"></i> Move To Trashcan</a>
                </div>
            </div>
        </td>
    </tr>
<?php endforeach;?>

期望效果:点击「Yes」按钮时,跳转链接变为类似onclick="window.location='http://localhost/NguyenTranTienHiep1/index.php/backend/delTempCat/46'"的形式,携带对应ID。


解决方案

步骤1:修改模态框确认按钮

移除按钮上的硬编码onclick属性,简化按钮代码:

<button type="button" class="btn btn-primary btn-ok">Yes</button>

步骤2:添加JavaScript逻辑捕获动态ID

在页面底部(或外部JS文件)添加以下代码,利用Bootstrap模态框的事件机制传递ID:

// 监听模态框即将显示的事件
document.getElementById('confirmation').addEventListener('show.bs.modal', function (event) {
  // 获取触发模态框的按钮元素
  const triggerBtn = event.relatedTarget;
  // 从按钮的data-id属性中拿到动态ID
  const itemId = triggerBtn.getAttribute('data-id');
  // 获取模态框内的确认按钮
  const confirmBtn = this.querySelector('.btn-ok');

  // 给确认按钮绑定跳转逻辑
  confirmBtn.onclick = function() {
    // 拼接带ID的完整删除URL并跳转
    window.location.href = `http://localhost/NguyenTranTienHiep1/index.php/backend/delTempCat/${itemId}`;
  }
});

逻辑说明

  • Bootstrap的show.bs.modal事件会在模态框显示前触发,event.relatedTarget就是触发模态框的那个「移至回收站」按钮,通过它可以读取按钮上的data-id值。
  • 拿到ID后,给确认按钮绑定点击事件,动态拼接跳转URL,确保每次弹出的模态框都对应正确的条目ID。

可选优化:使用PHP常量替代硬编码URL

如果项目中已有LINK常量(如其他编辑/状态按钮所用),可以先在页面头部定义JS变量:

<script>
const DEL_BASE_URL = '<?=LINK?>/backend/delTempCat/';
</script>

然后将JS中的跳转代码改为:

window.location.href = `${DEL_BASE_URL}${itemId}`;

这样URL更灵活,无需硬写完整路径。


内容的提问来源于stack exchange,提问作者Alukusukuku

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:55:35