PHP 数据表请求未知参数错误

问题描述 投票:0回答:1

我正在尝试将 jQuery DataTables 与服务器端 PHP 结合使用,并使用 AJAX 和日期范围过滤

javascript代码


$(document).ready(function() {
    $('#start_date, #end_date').datepicker({
        format: 'yyyy-mm-dd',
        autoclose: true
    });

    var dataTable = $('#data-table').DataTable({
        ajax: {
            url: 'server_processing.php',
            data: function (d) {
                d.start_date = $('#start_date').val();
                d.end_date = $('#end_date').val();
            }
        },
        processing: true,
        serverSide: true,
        columns: [
            { "data": 'idbir' },
            { "data": 'Tarih' },
            { "data": 'Name' },
            { "data": 'Accred' }
        ]
    });

   
    $('#start_date, #end_date').on('change', function() {
        dataTable.ajax.reload();
    });
});


  

服务器处理.php

<?php
$sql_details = array(
    'user' => 'root',
    'pass' => '',
    'db'   => 'countries',
    'host' => 'localhost'
);
$table = 'collegescores';
$primaryKey = 'idbir';

$columns = array(
    array('db' => 'idbir', 'dt' => 0),
    array(
        'db'        => 'Tarih',
        'dt'        => 1,
        'formatter' => function ($d,$row) {
            return date('Y-m-d', strtotime($d));
        }
    ),
    array('db' => 'Name', 'dt' => 2),
    array('db' => 'Accred', 'dt' => 3)
);



require('ssp.class.php');
$where = '';
if (isset($_GET['start_date'])) {
    $start_date = date('Y-m-d', strtotime($_GET['start_date']));
    $where .= "Tarih >= '$start_date'";
}

if (isset($_GET['end_date'])) {
    $end_date = date('Y-m-d', strtotime($_GET['end_date']));
    $where .= ($where ? ' AND ' : '') . "Tarih <= '$end_date'";
}

echo json_encode(
    SSP::simple($_GET, $sql_details, $table, $primaryKey, $columns, $where)
);
?>

错误: DataTables 警告:表 id=data-table - 请求第 0 行第 0 列的未知参数“idbir”。有关此错误的更多信息,请参阅 http://datatables.net/tn/4

php jquery mysql ajax datatables
1个回答
-1
投票

这是一个解决方案。对于造成的混乱深表歉意。

我会尽力解释。

所以,我猜您是使用 AJAX 的新手,如果您不是,那么抱歉。 ajax 需要 3 个边界:

Method:

您缺少

method
(如何从 JS 文件获取数据),但因为看起来您在 PHP 中使用了
$_GET
,对于
method
,您需要编写
method: 'GET'

url:

你的

url
很好。

data:

data
是您将要在 PHP 文件中使用/更改的 JS 文件中的值放入的位置。在这种情况下,您想要获得
start_date
end_date

因此,请尝试在 ajax 部分使用此代码:

// Make sure to get the value of end and start date
ajax: {
  method: 'GET',
  url: 'server_processing.php',
  data: {
    'start_date': start_date,
    'end_date': end_date
    // The value on left is the value that php will recognize and value on right is the JS value that it is equal to.
  },
  success: function(start_date, end_date) {
    // If the php code runs success then get return values and do something here
  }
},

希望这有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.