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

如何向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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:49:59