私はテーブル名とボタンを持つ<select >
を持っています。ボタンを押すたびに、選択したテーブルのデータベースからデータを取得する必要があります。ajaxコールでJquery DataTableを再作成
問題は、私は前の表より列数が異なるテーブルからデータを持参しようとした場合、それは私にエラーを与えることである。
Uncaught TypeError: Cannot read property 'style' of undefined(…)
それは以上の13hoursをされている私がしようとしていますこの仕事とまだ何もしないでください。ここで
は私のコードです:
- は1がすでに存在する場合にデータテーブルを破壊してみてください。
- データベースからカラム名を取得して、datatableでdinamically作成します。
- データベースから選択したテーブルのデータを取得します。
データ+列のデータテーブルを埋める:
$('body').on('click', '#btnTeste', function(e){ if ($.fn.DataTable.isDataTable('#myTable')) { $('#myTable').DataTable().destroy(); } e.preventDefault(); var tabela = $('select[name=selectTable]').val(); // Busca nome das columnas da tabela selecionada var columns = []; $.ajax({ type: 'GET', url: 'getcolumnName.php', dataType: 'json', data: {table: tabela}, success:function(data){ for(i=0; i < data.length; i++) { /*if(tabela == 'localidade') { columns.push({ "mDataProp": "Field"+ (i+1), sTitle: data[i].replace("dsc_","").replace("cod_munic", "cidade") .replace("id_bairro", "bairro").replace("id_endereco", "endereco"), sType : "string"}); } else */ columns.push({ "mDataProp": "Field"+ (i+1), sTitle: data[i].replace("dsc_",""), sType : "string"}); } } }) .done(function(msg){ var dados; $.ajax({ type: 'GET', url: 'listaLocalidade.php', dataType: 'json', data: {table: tabela}, success:function(data){ dados = data; } }) .done(function(msg){ var nFields = Object.keys(dados[0]).length; var nElements = dados.length; //Prepara array dos dados var resultado = []; for(i=0; i< nElements; i++){ resultado[i] = {}; var prop = "Field"; for(j=0; j < nFields; j++) { resultado[i][prop + (j+1)] = dados[i][ columns[j]['sTitle'] ]; } } console.log(columns); console.log(resultado); $('#myTable').DataTable({ "aoColumns" : columns, "aaData": resultado }); }); });
を})。
FYI:これは動作しますが、Yahooクエリプラグインがダウンしたり遅延したりすることがあります。 – thekodester