web-dev-qa-db-ja.com

データテーブルのリロード時にパラメータを渡す方法

次のように初期化するデータテーブルがあります。

mytable = DataTable({
        ajax:{
            url: "/url/getTableData",
            dataSrc: ""

        },
        sortClasses: false,
        paging: false,
        scrollY: 300,
        columns: cols
    });

後でやりたい

mytable.ajax.reload();

正常に動作しますが、そのリクエストでいくつかのパラメータを送信したいと思います。これらのパラメータは、テーブルの初期化ではなく、リロード時にのみ必要です。それ、どうやったら出来るの?ありがとうございました!

9
BMF

オプション1-preXhr.dtイベントを使用します。

_table = $('#example')
    .on('preXhr.dt', function ( e, settings, data ) {
        data.whateveryouwant = $("#someidhere").val()
        data.anotherexample = "kittens"
    } )
// then just setup your datatable as normal
    .DataTable({
        ajax:{
            url: "/url/getTableData",
            type: "GET" // This is the default value, could also be POST
        },
        sortClasses: false,
        paging: false,
        scrollY: 300,
        columns: cols
});
_

ここを参照 http://datatables.net/reference/event/

オプション2(推奨)-ajax.data関数を使用します。

_table = $('#example').DataTable({
    ajax:{
        url: "/url/getTableData", // Change this URL to where your json data comes from
        type: "GET", // This is the default value, could also be POST, or anything you want.
        data: function(d) {
            d.whateveryouwant = $("#someidhere").val()
            d.anotherexample = "kittens"
        }

    },
    sortClasses: false,
    paging: false,
    scrollY: 300,
    columns: cols
});
_

どちらのオプションでも同じ結果が得られます。サーバーは違いを認識しません。追加のデータは、すべてのtable.ajax.reload()に追加されます。追加のデータは次のようになります。

whateveryouwantの_#someidhere_要素の値、および

anotherexampleの値は_"kittens"_

オプション2をお勧めします。これは、リクエストごとに追加のデータが追加されていることがより明白だからです。最初のオプションは少し卑劣で、他の誰かがあなたのコードを読んでいるほど明白ではないと思います。

23
ZenCodr