0

0

如何在 Bootstrap 模态框中通过 PHP 动态加载并编辑表格单元格数据

花韻仙語

花韻仙語

发布时间:2025-12-27 13:24:02

|

121人浏览过

|

来源于php中文网

原创

如何在 Bootstrap 模态框中通过 PHP 动态加载并编辑表格单元格数据

本文详解如何在点击 bootstrap 表格单元格时,正确触发模态框、通过 ajax 调用 php 获取对应行数据(如 `deviceid` 和 `functiondata`),并将其填充至表单输入框中,实现可编辑与保存功能。重点解决因 jquery 选择器错误(混淆 id 与 class)导致数据无法显示的常见问题。

在使用 Bootstrap Table 配合 PHP 后端实现「点击单元格弹出编辑模态框」功能时,一个高频陷阱是:前端 jQuery 选择器与 HTML 元素属性不匹配,导致数据成功返回却无法渲染到表单中。您提供的代码中,输入框定义为 ,但 JavaScript 中却误用 $('.functionData').val(...) —— 这会尝试查找 class="functionData" 的元素,而该 class 并不存在,因此赋值失败。

✅ 正确做法是统一使用 ID 选择器:

// ✅ 修正后的 JS:使用 #functionData(ID 选择器)
$('#scandata').on('click-cell.bs.table', function (e, field, value, row, $el) {
  if (field === 'functionData') { // 注意:应比对 field(列名),而非 value(单元格内容)
    const deviceId = row.deviceId; // 推荐直接从 row 对象取值,更可靠
    const currentFunctionData = row.functionData || '';

    $.ajax({
      url: 'getFunctionData.php',
      type: 'POST',
      dataType: 'json',
      data: { deviceId: deviceId },
      success: function(response) {
        // 填充模态框输入框(注意:#functionData 是 ID,不是 class)
        $('#functionData').val(response.functionData || currentFunctionData);
        // 同时可隐藏/显式存储 deviceId(用于提交)
        $('#save-form').data('device-id', deviceId);
        $('#myModal').modal('show');
      },
      error: function(xhr) {
        console.error('获取数据失败:', xhr.responseText);
        alert('无法加载功能数据,请重试。');
      }
    });
  }
});

? 关键修复点说明:

  • $('#functionData') → 正确匹配
  • field === 'functionData' → 使用 click-cell 事件的 field 参数判断列名(更健壮,避免 value 冲突);
  • 从 row 对象读取 deviceId 和 functionData,避免依赖 DOM 属性(如 $el.deviceId 不可靠);
  • 添加 dataType: 'json' 显式声明响应格式,确保 response.functionData 可安全访问;
  • 使用 .data('device-id', ...) 在表单上暂存设备 ID,便于后续提交时携带。

? 同时,请同步优化您的 getFunctionData.php,确保返回标准 JSON 结构:

立即学习PHP免费学习笔记(深入)”;

 '']);
    exit;
}

$functionQuery = "SELECT functionData FROM devices WHERE deviceId = ?";
if ($stmt = $connection->prepare($functionQuery)) {
    $stmt->bind_param("i", $deviceId);
    $stmt->execute();
    $stmt->bind_result($functionData);
    $stmt->fetch();
    $stmt->close();

    // 统一返回对象,含 functionData 字段(即使为空)
    echo json_encode(['functionData' => $functionData ?: '']);
} else {
    echo json_encode(['functionData' => '']);
}

? 进阶建议(提升用户体验):

Looka
Looka

AI辅助Logo和品牌设计工具

下载
  • 在模态框打开前添加 loading 状态(如禁用按钮 + 旋转图标);

  • 为“Save Changes”按钮绑定提交逻辑,防止重复点击:

    $('#save-btn').off('click').on('click', function() {
      const deviceId = $('#save-form').data('device-id');
      const newFunctionData = $('#functionData').val().trim();
    
      $.post('update.php', { deviceId, functionData: newFunctionData }, function(res) {
        if (res.success) {
          $('#myModal').modal('hide');
          // 可选:刷新当前行或整表
          $('#scandata').bootstrapTable('refresh');
        } else {
          alert('保存失败:' + (res.message || '未知错误'));
        }
      }, 'json');
    });
  • 在 update.php 中务必进行服务端校验与 SQL 防注入(已使用预处理语句,这点您做得很好 ✅)。

通过以上修正,您的模态框将能准确加载并展示原始数据,用户可自由编辑后保存,真正实现「所见即所编」的闭环交互体验。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

1752

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1161

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1059

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

948

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1396

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1228

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1439

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1303

2023.11.13

ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

27

2025.12.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 7.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号