2016-03-23 111 views
0

私はDataTableを持っています。これは、のAYAXデータを一度正しく取り出すことができ、テーブルを初期化します。
これで、AJAXデータを「再フェッチ」してDataTableを更新できるようにする必要がありますが、はテーブルを再初期化せずに済みます。DataTableでAJAXデータを変更する方法

ajax.data(data, settings) 

は、ここで説明:http://datatables.net/reference/option/ajax.data

しかし

は、いくつかの研究の後、私は私が "機能として" 次の行を使用する必要が出ました。私はこれを "関数として"使う方法を見つけることができません。このページには例はありません。

次のように試しました。
私の元のDataTableの作成:

launch_datatable_ajax = function(){ 
    get_ajax_data(); 

    dyn_t = $('#dynamic_table').DataTable({ 
      "ajax": { 
       "url":ajax_url, 
       "data":data, 
       "dataSrc":"" 
      }, 
      "columns": [ 
       { "data" : "ID" }, 
       { "data" : "post_title" }, 
       { "data" : "supplier_company" }, 
       { "data" : "img_src" }, 
       { "data" : "tags" }, 
       { "data" : "post_meta" }, 
      ], 

    }); 

} 

は、その後、私は新しいパラメータでデータをリロードしてみました。 ここに私は立ち往生しています。

dyn_t.ajax.data(data,dyn_t.settings); 

私はパラメータのために正しいと思う:上(変数を取得)console.log(dyn_t.settings);
のデータは私のオブジェクトを与える::
dyn_t.settingsが上のいくつかの情報を与えるconsole.log(data);

しかし、 console.logと表示されます:

Uncaught TypeError: dyn_t.ajax.data is not a function(…)

答えて

0

リロードはdyn_t.ajax.reload();のものです。

ただし、更新されたURLパラメータもサーバーに送信する必要があります。これを行うには

、あなたはAJAX用の関数の引数を使用する必要があります。http://datatables.net/reference/option/ajax#function

機能再検証し、すべてのajax.reload()コールインチこれが新しいパラメータが送信される理由です。

  ajax: function (data, callback, settings) { 
       $.ajax({ 
        url: "ajax_url?" + $("my-form").serialize(), 
        data: { start: data.start, count: data.length } 
       }); 
      }, 
+0

これは、AJAXを再ロードしますが、新しい取得値を取得できません。ですから、ID my-formとHTMLのフォームを持っていると仮定すると、このような何かを試してみてください。 – mesqueeb

+0

これはajax呼び出しを行うため、サーバーからフェッチされたデータはデータテーブルに反映されます。これは起こっていないのですか?サーバーからの新しいデータが実際に最初のデータと異なるかどうかを調べることはできますか? –

+1

データが再度取得されますが、ユーザーが別のデータを入力して他のデータを検索しています。つまり、私はajaxをリロードする必要があるが、取得する値は異なると言うことを意味する。私がリロードすれば元のget-valueが導かれます。私は関数get_ajax_data()を使用しました。新しいget値を取得し、datatablesが使用するjob URLに貼り付けます。 – mesqueeb

関連する問題