2017-01-14 13 views
-1

変数名はsearch_genです。この変数はajaxから生成されます(下のコードを参照)。私は上記のそれは変数JavaScriptをaodataデータテーブルにプッシュする方法

table=$('#table').dataTable({ 
    "sScrollY": "400px", 
    "bFilter": false, 
    "bProcessing": true, 
    "bServerSide": true, 
    "sServerMethod": "GET", 
    "sAjaxSource": link+module_name+'populate_list/'+module_active, 
    "iDisplayLength": 25, 
    "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]], 
    "columnDefs": [ { 
      "targets": 0, 
      "orderable": false 
      }, 
      { 
      "targets": -1, 
      "orderable": false 
      } ], 
    "fnServerParams": function (aoData) { 
    aoData.push({"name":"room_type_name","value":$("#room_type_name").val()}, 
       {"name":"room_type_code","value":$("#room_type_code").val()}) 
       } 
}) 

とするとき怒鳴るサンプルコードを作業変数を使用せずにJSONを配置する場合、この変数は(ショー怒鳴る)

{"name":"room_type_name","value":$("#room_type_name").val()},{"name":"room_type_code","value":$("#room_type_code" 
).val()} 

JSONデータが含まれています例えば

var search_gen; 
$.ajax({ 
    type: "POST", 
    url: link+module_name+'search_generator/'+module_active, 
    dataType: "text", 
    async: false, 
    success: function(data){ 
     search_gen = data; //or something similar 
    } 
}); 

I変数を使用してブラケットに入れてくださいaodata(seach_gen)(下のコード)

table=$('#table').dataTable({ 
     "sScrollY": "400px", 
     "bFilter": false, 
     "bProcessing": true, 
     "bServerSide": true, 
     "sServerMethod": "GET", 
     "sAjaxSource": link+module_name+'populate_list/'+module_active, 
     "iDisplayLength": 25, 
     "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]], 
     "columnDefs": [ { 
       "targets": 0, 
       "orderable": false 
       }, 
       { 
       "targets": -1, 
       "orderable": false 
       } ], 
     "fnServerParams": function (aoData) { 
     aoData.push(search_gen) 
} 
    }); 

このようなエラーが表示されます。

私の質問は、私は私の変数search_gen

aodata.push()にを渡すんか である私はあなたが .dataTableを呼び出す前に完了するために最初のAJAX呼び出しを待っていないと仮定し、あなたに

答えて

0

ありがとうございます。次のコードを試してみてください。また

var search_gen; 
$.ajax({ 
    type: "POST", 
    url: link+module_name+'search_generator/'+module_active, 
    dataType: "text", 
    async: false, 
    success: function(data){ 
     search_gen = data; //or something similar 
    } 
}).done(function(data) { 
    table=$('#table').dataTable({ 
     "sScrollY": "400px", 
     "bFilter": false, 
     "bProcessing": true, 
     "bServerSide": true, 
     "sServerMethod": "GET", 
     "sAjaxSource": link+module_name+'populate_list/'+module_active, 
     "iDisplayLength": 25, 
     "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]], 
     "columnDefs": [ { 
       "targets": 0, 
       "orderable": false 
       }, 
       { 
       "targets": -1, 
       "orderable": false 
       } ], 
     "fnServerParams": function (aoData) { 
     //aoData.push(search_gen) 
     Array.prototype.push.apply(aoData,search_gen); // <<<<<<<<<<<< use this 
     } 
    }); 
}); 

を、あなたは最初$.ajax.dataTablesuccess内部コールバックを呼び出すことができますし、aoData.push(data)のように、search_genの代わりにdataパラメータを使用します。

EDIT:あなたのコメントに基づいて

私はsearch_genはあなたがArray.prototype.push.apply(aoData,search_gen);代わりのaoData,.push(search_gen);を使用する必要があります。その場合には、配列、だと思います。上記のコードを確認してください。

+0

私はすでにあなたに示唆していることを試していますが、それでも動作しません。それでも同じエラーメッセージが表示されます。 –

関連する問題