2017-12-10 25 views
1

私のコードに問題があります。私は私のDataTable変数値がAjax.reloadデータテーブルで変更されていません

このコードでyear値を変更することはできません取得します実際の年:

var yearDate = new Date(); 

var year = yearDate.getFullYear(); 

私のDataTable方法:

$(document).ready(function() { 

    januaryTable = $('#january').DataTable({ 

     "processing": true, 
     "serverSide": true, 
     "order": [], 


     "ajax": { 
      "url": "<?php echo site_url('gastos/ajax_list/')?>" + year+'-01-01' +'/'+ year+'-01-31', 
      "type": "POST", 

     }, 

     "columnDefs": [ 
      { 
       "targets": [ -1 ], 
       "orderable": false, 
      }, 
     ], 

    }); 
} 

このコードは、リロードする私のDataTable

function reload_january_table() 
{ 
    januaryTable.ajax.reload(null,false); 

} 

var yearをselectメソッドで変更し、関数reload_january_table()を呼び出しますが、たとえば値2016を選択した場合、テーブルは2016から値を取得せず、2017の値を保持します。

誰かが私を助けることができますか?そして、もしそれが良くなければ、私の英語のために申し訳ありません。

+0

_selectメソッドはどのように実装されていますか? – dferenc

+0

私は関数でそれを使用するので、var年の値が変更されました。 –

+0

関数リダイレクト(obj){ var yearO = obj.value; 年= yearO; reload_january_table(); reload_january_total_invoice(); } –

答えて

1

問題は、ajax.urlはテーブルが初期化されたときにのみ評価されるため、年変数の最初の値がURLに「焼き付かれる」ことになります。

dataTable.ajax.url('NEW_URL').load(); 

あなたはajax.url()下のDataTableのドキュメントの関連部分を見つける:

ソリューションはそうのような年の値が変化したときには、DataTableのための新しいURLを設定することです。

具体的なケースでは、reload_january_table(year)関数呼び出しに引数としてyearの新しい値を渡し、その関数に以下のように使用できます。

function reload_january_table(year) { 
    var newUrl = "<?php echo site_url('gastos/ajax_list/')?>" + year + '-01-01' + '/' + year + '-01-31'; 

    januaryTable.ajax.url(newUrl).load(); 
} 
+0

ありがとうございました。 –

関連する問題