使用ajax调用重新创建Jquery DataTable

时间:2016-12-05 01:50:17

标签: javascript jquery datatables

我有<select >表名和按钮。每次按下按钮,我都必须从所选表格的数据库中提取数据。

问题在于,如果我尝试从列表中获取与前一个表不同的列数据,则会出现错误:

  

未捕获的TypeError:无法读取属性&#39; style&#39;未定义的(...)

我已经超过13个小时了,我试图完成这项工作,但还没有。

以下是我的代码:

  • 如果已经有数据表,请尝试销毁数据表;
  • 从数据库中获取列名,以便在数据表上创建它;
  • 从数据库中获取所选表的数据;
  • 用数据+列填充数据表:

    $('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
            });
        });
    });
    

    });

0 个答案:

没有答案