如何向DataTable的AJAX请求传递筛选参数至fetch_pasar.php
如何在DataTable的AJAX请求中传递筛选参数到后端
需求说明
需要将页面中nombremedico下拉框、initial_date和final_date日期框的参数,通过DataTable的AJAX请求传递到fetch_pasar.php,实现表格数据的筛选。
解决方案
1. 修改DataTable的AJAX配置,添加参数传递逻辑
在DataTable的ajax配置中新增data函数,用于收集并传递筛选参数:
var dataTable = $('#order_data').DataTable({ "language": { "lengthMenu": "Mostrar _MENU_ registros", "zeroRecords": "No se encontraron resultados", "info": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros", "infoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros", "infoFiltered": "(filtrado de un total de _MAX_ registros)", "sSearch": "Buscar:", "oPaginate": { "sFirst": "Primero", "sLast":"Último", "sNext":"Siguiente", "sPrevious": "Anterior" }, "sProcessing":"Procesando...", }, dom: 'Blfrtip', buttons: [ 'copy', 'csv', 'excel', 'pdf', 'print' ], "processing" : true, "serverSide" : true, "lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "Todos"] ], "order" : [], "ajax" : { url:"fetch_pasar.php", type:"POST", // 收集并传递筛选参数 data: function(d) { d.nombremedico = $('#nombremedico').val(); d.initial_date = $('#initial_date').val(); d.final_date = $('#final_date').val(); return d; } }, drawCallback:function(settings) { $('#total_order').html(settings.json.total); $('#total_pago').html(settings.json.total_pago); } });
2. 添加筛选控件的事件监听,触发表格重绘
为下拉框和日期输入框添加change事件,当用户选择或修改筛选条件时,自动重新加载表格数据:
// 监听医生下拉框变化 $('#nombremedico').on('change', function() { dataTable.draw(); }); // 监听日期输入框变化 $('#initial_date, #final_date').on('change', function() { dataTable.draw(); });
3. 后端fetch_pasar.php接收并使用参数
在后端通过$_POST获取传递的参数,并在SQL查询中加入筛选条件(注意使用预处理语句防止SQL注入):
// 获取前端传递的参数 $nombremedico = $_POST['nombremedico'] ?? ''; $initial_date = $_POST['initial_date'] ?? ''; $final_date = $_POST['final_date'] ?? ''; // 构建查询语句示例(根据实际表结构调整) $sql = "SELECT * FROM tu_tabla WHERE 1=1"; $params = []; if (!empty($nombremedico)) { $sql .= " AND medico_nombre = ?"; // 替换为实际字段名 $params[] = $nombremedico; } if (!empty($initial_date) && !empty($final_date)) { $sql .= " AND fecha BETWEEN ? AND ?"; $params[] = $initial_date; $params[] = $final_date; } // 执行预处理查询(示例) $stmt = $pdo->prepare($sql); $stmt->execute($params); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); // 后续处理DataTable需要的返回格式...
内容的提问来源于stack exchange,提问作者lexer
相关产品推荐
相关产品推荐

