使用php发送json填充数据表

时间:2014-12-23 12:19:09

标签: javascript php jquery json jquery-datatables

我遇到了麻烦,在我的代码中发现了问题。

我正在编写搜索脚本,并且我想在Datatable中显示结果。我有一个搜索表单,将数据发送到我的php文件并返回我的查询结果的json_encode,然后在ajax成功,我构建我的表将结果传递给"数据":响应。

当我在没有Datatables的情况下进行查询时,查询工作正常,但由于我需要分页和填充,我需要它来处理Datatables。

表格的HTML:

<div id="results">

        <table id="example" class="display compact hover stripe" cellspacing="0" width="100%">
            <thead>

                <th>Cognome</th>
                <th>Nome</th>
                <th>Telefono</th>
                <th>Provincia</th>
                <th>Tipo Cliente</th>
                <th>Amministrazione</th>
                <th>Stato</th>
                <th>Fonte</th>
                <th>Data Ricezione</th>
                <th></th>

            </thead>          
        </table>

    </div>

Javascript for Datatable:

$('#submit_src').on("click", function() { 

    $.ajax({
        data: $("#ricerca").serialize(), 
        type: $("#ricerca").attr('method'), 
        url: $("#ricerca").attr('action'),
        success: function(response) {

            $('#example').dataTable( {
                "data": response,
                "sPaginationType": "listbox",
                "bFilter": false,
                "jQueryUI": true,
                "processing": true,
                'iDisplayLength': 25,
            } );
        }

    });
    return false;
});

&#34; submit_src&#34;是我提交课程的按钮,&#34; ricerca&#34;是我的表格的名称。

我得到的json代码是:

{"sEcho":0,"iTotalRecords":"35036","iTotalDisplayRecords":"1","aaData":[["stuff","stuff","stuff","stuff","stuff","stuff","stuff","stuff","stuff","stuff"]]}

错误:

DataTables warning: table id=example - Requested unknown parameter '1' for row 0.

3 个答案:

答案 0 :(得分:1)

此链接可能有助于您尝试完成的任务:http://datatables.net/release-datatables/examples/ajax/objects.html。它解释了DataTables需要数据的数组;但是,为了使用对象,可以使用columns.data选项完成。

我还使用了没有<tbody>的DataTables,所以这应该不是问题。

编辑: 尝试下面这个,我能够得到这些东西&#39;在表格中显示:

$('#example').dataTable( {
    "data": response.aaData
} );

编辑2:

jQuery(document).ready(function() {

    var response = {
       "sEcho":0,"iTotalRecords":"35036","iTotalDisplayRecords":"1",
       "aaData": [
       ["stuff","stuff","stuff","stuff","stuff","stuff","stuff","stuff","stuff","stuff"]]
    };

    $('#example').dataTable( {
        "data": response.aaData,
        //"sPaginationType": "listbox",
        "bFilter": false,
        "jQueryUI": true,
        "processing": true,
        'iDisplayLength': 25
    } );

});

答案 1 :(得分:1)

您可能缺少选项

        dataType : "json",

你的代码。如果没有指定,这可能会混淆从ajax脚本中收到的数据类型。

答案 2 :(得分:0)

我相信DataTables需要<tbody></tbody>,因此它知道返回数据的位置。尝试将其添加到table#example

    <table id="example" class="display compact hover stripe" cellspacing="0" width="100%">
        <thead>

            <th>Cognome</th>
            <th>Nome</th>
            <th>Telefono</th>
            <th>Provincia</th>
            <th>Tipo Cliente</th>
            <th>Amministrazione</th>
            <th>Stato</th>
            <th>Fonte</th>
            <th>Data Ricezione</th>
            <th></th>

        </thead> 
        <tbody></tbody>         
    </table>