AJAX:jQuery DataTables(服务器端)没有获得任何请求(GET或POST)数据

时间:2015-02-26 18:10:47

标签: javascript php jquery ajax datatable

我尝试打印一个简单的DataTables,当我在任何列上使用搜索/过滤器时(或者#34;整个表"页面右上角的一个),我想要更新。当我点击列标题(进行排序)时,请求会通过(尽管页面仍然显示"处理"无限期)。当我在过滤器中输入任何内容时,它会说"处理"无限期地,但没有请求传递给服务器。

以下是脚本:

client.php

<!-- jQuery and DataTables JS files, including CSS, are included here -->
<table id="employee-table" class="table-striped">
<thead>
<tr>
    <th>First</th>
    <th>Last</th>
    <th>DOB</th>
</tr>
<tr>
    <th>First</th>
    <th>Last</th>
    <th>DOB</th>
</tr>
</thead>
</table>
<script type="text/javascript">
jQuery(document).ready(function() {

    jQuery("#employee-table").dataTable({
        processing: true,
        serverSide: true,
        ajax: {
            url: "datatable.php",
            type: 'POST'
        }
    }).columnFilter({
        sPlaceHolder: "head:after",
        aoColumns: [
            { type: "text" },
            { type: "text" },
            { type: "text" }
        ]
    });
});
</script>

datatable.php

file_put_contents("debug.txt", $_REQUEST);

echo '{
"draw": 1,
"recordsTotal": 3,
"recordsFiltered": 3,
"data": [
    [
        "Angelica",
        "Ramos",
        "1986-01-01"
    ],
    [
        "Ashton",
        "Cox",
        "1987-01-01"
    ],
    [
        "Test",
        "Third",
        "1989-01-01"
    ]
]
}';

正如您所看到的,我在服务器端脚本上所做的只是将所有请求的数据打印到文件中,以便我可以检查它。问题是,无论我在过滤器框中输入什么内容,都没有请求数据通过。这是一个视觉:

Notice the search for 198 in the top-right corner and the ever persisting "Processing..." on the screen

这是debug.txt的输出。请注意,这是在client.php的初始加载时加载到文件中的内容,当您在任何搜索框中键入任何内容时,它不会更改:

Array
(
[draw] => 1
[columns] => Array
    (
        [0] => Array
            (
                [data] => 0
                [name] => 
                [searchable] => true
                [orderable] => true
                [search] => Array
                    (
                        [value] => 
                        [regex] => false
                    )

            )

        [1] => Array
            (
                [data] => 1
                [name] => 
                [searchable] => true
                [orderable] => true
                [search] => Array
                    (
                        [value] => 
                        [regex] => false
                    )

            )

        [2] => Array
            (
                [data] => 2
                [name] => 
                [searchable] => true
                [orderable] => true
                [search] => Array
                    (
                        [value] => 
                        [regex] => false
                    )

            )

    )

[order] => Array
    (
        [0] => Array
            (
                [column] => 0
                [dir] => asc
            )

    )

[start] => 0
[length] => 10
[search] => Array
    (
        [value] => 
        [regex] => false
    )

)

为了让过滤器正常工作,我缺少什么?我认为我的客户端DataTables JavaScript配置错误,但我不知道如何。我的搜索似乎只是拉起了#34;遗产&#34; DataTables解决方案,而不是他们拥有的简化版本。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

尝试如下:

client.php

$(document).ready(function() {
    var oTable = $('#employee-table').dataTable({
            "bJQueryUI": true,
            "bProcessing": true,
            "bServerSide": true,
            "bRedraw": true,
            "sAjaxSource": "datatable.php",
            "aoColumns": [
                {"mDataProp": "first"},
                {"mDataProp": "last"},
                {"mDataProp": "dob"},
            ],
            "aaSorting": [[0, "asc"]]
    });
});

<强> datatable.php

请检查以下链接,并在datatable提供的代码中配置数据库设置。

Server Side Code