数据表 - 分页不适用于来自json文件的动态数据

时间:2015-08-19 09:42:56

标签: javascript php jquery json datatables

因为几天我遇到一个奇怪的问题,试图使用DataTables分页让我发疯。

奇怪的是,如果我通过Firebug粘贴我的页面上打印的数据,我可以分页,但这不可能在页面上显示,所以很明显我的Ajax调用存在问题。

你可以在这里看到:

http://live.datatables.net/zoxuhewa/1/edit

在这里,如果你删除" odd"行,结果是分页的,但是,正如您从结果中看到的那样,这不会发生在我的网页中。

让我告诉你我在Pastebin中做了什么(我希望他们在这里允许):

这就是我的HTML的样子:

        <div class="row">
            <div class="col-xs-12">

                <div class="box">
                    <div class="box-header">
                        <h3 class="box-title">Data Table With Full Features</h3>
                    </div>
                    <!-- /.box-header -->
                    <div class="box-body">
                        <table id="example1" class="table table-bordered table-striped">
                            <thead>
                            <tr class="row">
                                <th>ID</th>
                                <th>Nome</th>
                                <th>Cognome</th>
                                <th>Indirizzo</th>
                                <th>Email</th>
                                <th>Tipo contatto</th>
                                <th>Telefono 1</th>
                                <th>Telefono 2</th>
                                <th>Telefono 3</th>
                                <th>Azioni</th>
                            </tr>
                            </thead>
                            <tbody id="tab-0">

                            </tbody>
                        </table>
                    </div>
                    <!-- /.box-body -->
                </div>
                <!-- /.box -->
            </div>
            <!-- /.col -->
        </div>
        <!-- /.row -->

这就是用PHP编写的JSON数据

    if ($result = $this->hookUp->query($this->sqlA)) {
        while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {

            $id = $row['id'];

            $data[] = array("id" => "<td>" . $row['id'] . "</td>",
                "nome" => "<td id='nome:" . $id . "' contenteditable='true'>" . $row['nome'] . "</td>",
                "cognome" => "<td id='cognome:" . $id . "' contenteditable='true'>" . $row['cognome'] . "</td>",
                "indirizzo" => "<td id='indirizzo:" . $id . "' contenteditable='true'>" . $row['indirizzo'] . "</td>",
                "email" => "<td id='email:" . $id . "' contenteditable='true'>" . $row['email'] . "</td>",
                "tipo_contatto" => "<td id='tipo_contatto:" . $id . "' contenteditable='true'>" . $row['tipo_contatto'] . "</td>",
                "telefono_1" => "<td id='telefono_1:" . $id . "' contenteditable='true'>" . $row['telefono_1'] . "</td>",
                "telefono_2" => "<td id='telefono_2:" . $id . "' contenteditable='true'>" . $row['telefono_2'] . "</td>",
                "telefono_3" => "<td id='telefono_3:" . $id . "' contenteditable='true'>" . $row['telefono_3'] . "</td>",
                "edit" => "<td>" . '<a id="' . $row['id'] . '" class="delete" href="#"><i class="fa fa-fw fa-remove"></i></a>
                <a id="' . $row['id'] . '" class="edit" href="#"><i class="fa fa-fw fa-edit"></i>' . "</a></td>");

            $response['cliente'] = $data;

            $fp = fopen("../lista.json", "w");
            fwrite($fp, json_encode($response));
            fclose($fp);
        }
    }

这是附加JSON数据的方式:

    $.getJSON("lista.json", function (json) {

        if (json.cliente) {

            for (i = 0; i < json.cliente.length; i++) {
                var obj = json.cliente[i];

                var output = "<tr class='row'>";

                for (var key in obj) {
                    name = key;
                    value = obj[key].toString();

                    output += value;
                }

                output += "</tr>";

                console.log(output);

                $("#tab-0").append(output);
            }

        }

 [...] close brackets.

当然,HTML放在代码的更广泛部分(整个页面)中。

让我知道我能做些什么,我真的疯了。感谢。

0 个答案:

没有答案