使用 jQuery 和 DataTables 传递表单数据进行动态数据过滤

DDD
发布: 2025-10-13 11:01:02
原创
895人浏览过

使用 jquery 和 datatables 传递表单数据进行动态数据过滤

本文旨在解决如何通过 HTML zuojiankuohaophpcnselect> 表单向 DataTables 传递数据,从而实现动态数据过滤。我们将介绍如何利用 jQuery 监听表单提交事件,并将表单数据作为 AJAX 请求的一部分发送到服务器端,最终更新 DataTables 的显示内容。通过本文,你将掌握 DataTables 动态数据加载和过滤的关键技术。

前端实现:jQuery 与 DataTables 的集成

首先,我们需要在 HTML 中创建一个包含 <select> 元素的表单,并使用 DataTables 初始化一个表格。关键在于如何将表单的值传递给 DataTables 的 AJAX 请求,并在服务器端利用这些值进行数据过滤。

HTML 结构 (index.php):

<form method="POST" id="frm">
  <select name="selectplace">
    <option value="PLACE 1">PLACE 1</option>
    <option value="PLACE 2">PLACE 2</option>
    <option value="PLACE 3">PLACE 3</option>
  </select>
  <button type="submit" name="submitPlace">SUBMIT</button>
</form>

<div class="table-responsive">
  <table class="table table-bordered table-striped text-center" id="place-table">
    <thead>
      <tr>
        <th>PLACE #</th>
        <th>PLACE NAME</th>
        <th>TOTAL VISITORS</th>
      </tr>
    </thead>
    <tfoot>
      <tr>
        <th>PLACE #</th>
        <th>PLACE NAME</th>
        <th>TOTAL VISITORS</th>
      </tr>
    </tfoot>
  </table>
</div>
登录后复制

jQuery 代码:

以下是使用 jQuery 监听表单提交事件,并重新加载 DataTables 的 AJAX 数据的关键代码。

表单大师AI
表单大师AI

一款基于自然语言处理技术的智能在线表单创建工具,可以帮助用户快速、高效地生成各类专业表单。

表单大师AI 74
查看详情 表单大师AI
$(document).ready(function() {
  var table = $('#place-table').DataTable({
    "ajax": {
      url: "json.php",
      "dataSrc": "",
      "data": function(d) {
        var frm_data = $('#frm').serializeArray(); // 使用 ID 选择器
        $.each(frm_data, function(key, val) {
          d[val.name] = val.value;
        });
      }
    },
    columns: [{
      data: 'place_id'
    }, {
      data: 'place_name'
    }, {
      data: 'total_visitor'
    }]
  });

  $("#frm").submit(function(e) { // 使用 ID 选择器
    e.preventDefault();
    table.ajax.reload();
  });
});
登录后复制

代码解释:

  1. var table = $('#place-table').DataTable({...}): 初始化 DataTables,并将 DataTables 对象赋值给变量 table,以便后续操作。
  2. "data": function(d) {...}: 在 AJAX 请求中,定义 data 函数,用于动态构建要发送到服务器的数据。$('#frm').serializeArray() 将表单数据序列化为数组,然后循环遍历该数组,将每个字段的值添加到 DataTables 的 AJAX 请求参数中。 注意这里需要使用 #frm 通过ID选择器来选择表单
  3. $("#frm").submit(function(e) {...}): 监听表单的提交事件。e.preventDefault() 阻止表单的默认提交行为,table.ajax.reload() 重新加载 DataTables 的 AJAX 数据,从而更新表格内容。 注意这里需要使用 #frm 通过ID选择器来选择表单

后端实现:PHP 数据过滤 (json.php)

在服务器端,我们需要接收来自 DataTables 的 AJAX 请求,并使用表单数据作为 WHERE 子句来查询数据库。

<?php
  $servername = "localhost";
  $username = "your_username";
  $password = "your_password";
  $dbname = "your_database";

  // 创建连接
  $conn = new mysqli($servername, $username, $password, $dbname);

  // 检测连接
  if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
  }

  $selectedplace = $_POST['selectplace']; // 获取selectplace的值
  $sql = "SELECT * FROM placestable WHERE place_name = '$selectedplace'"; // 使用预处理语句防止SQL注入

  $result = $conn->query($sql);

  $data = array();
  if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
      $data[] = array(
        "place_id"=>$row['id'],
        "place_name"=> $row['place_name'],
        "total_visitor"=> $row['total_visitor']
      );
    }
  }

  echo json_encode($data);
  $conn->close();
?>
登录后复制

代码解释:

  1. $selectedplace = $_POST['selectplace'];: 获取通过 POST 请求发送的 selectplace 的值。
  2. *`$sql = "SELECT FROM placestable WHERE place_name = '$selectedplace'";**: 构造 SQL 查询语句,使用$selectedplace的值作为WHERE` 子句的条件。重要提示:为了防止 SQL 注入攻击,应该使用预处理语句来构建 SQL 查询。 例如:
    $stmt = $conn->prepare("SELECT * FROM placestable WHERE place_name = ?");
    $stmt->bind_param("s", $selectedplace);
    $stmt->execute();
    $result = $stmt->get_result();
    登录后复制
  3. echo json_encode($data);: 将查询结果编码为 JSON 格式,并将其发送回客户端。

注意事项和总结

  • 安全性: 始终使用预处理语句来防止 SQL 注入攻击,特别是当使用用户提供的输入来构建 SQL 查询时。
  • 错误处理: 在服务器端添加错误处理机制,以便在发生错误时能够正确地处理并返回错误信息给客户端。
  • 性能优化: 如果数据量很大,可以考虑使用服务器端分页来提高性能。
  • 表单验证: 在客户端和服务器端都进行表单验证,以确保数据的有效性和完整性。
  • ID选择器: 确保在jQuery选择表单的时候使用ID选择器 #frm,这可以更准确地选择到目标表单元素。

通过本文,你学习了如何将 HTML 表单与 DataTables 集成,从而实现动态数据过滤。 掌握这些技术将使你能够构建更加灵活和交互性更强的 Web 应用程序。

以上就是使用 jQuery 和 DataTables 传递表单数据进行动态数据过滤的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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