2017-09-15 1 views
0

J'essaie d'obtenir les données de la table et de les stocker dans un tableau et de les transmettre dans le contrôleur pour que je puisse écrire en PHP Excel. J'ai essayé d'utiliser d'autres données et cela a fonctionné. Maintenant, quand j'essaie d'utiliser ceci, mon fichier Excel est vide.Envoi d'un tableau à AJAX et accès aux données transmises au contrôleur dans Codeigniter

Voici mon code Javascript

var TableData = new Array(); 
    $('#tblmonthlydues tr').each(function(row, tr){ 
     TableData[row] = { 
      "amortid" : $(tr).find('td:eq(0)').text() 
      , "duedate" :$(tr).find('td:eq(1)').text() 
      , "customername" : $(tr).find('td:eq(2)').text() 
      , "lotdesc" : $(tr).find('td:eq(3)').text() 
      , "daysdue" : $(tr).find('td:eq(4)').text() 
      , "amountdue" : $(tr).find('td:eq(5)').text() 
      , "amortdue" : $(tr).find('td:eq(6)').text() 
      , "surcharge" : $(tr).find('td:eq(7)').text() 
      , "vat" : $(tr).find('td:eq(8)').text() 
      , "ips" : $(tr).find('td:eq(9)').text() 
      , "interest" : $(tr).find('td:eq(10)').text() 
      , "principal" : $(tr).find('td:eq(11)').text() 
      , "payments" : $(tr).find('td:eq(12)').text() 
     } 
    }); 
    TableData.shift(); 
    var data = JSON.stringify(TableData); 
    data = data.substring(0, data.length - 1).substring(1, data.length); 
    console.log(data); 

    $.ajax({ 
     type: "POST", 
     url: baseurl + "collection/get_monthly_dues_report", 
     data: {'data':data}, 
     success: function(data){ 
      window.location.href = baseurl + "collection/get_monthly_dues_report"; 
     }, 
     error: function(data){ 

     }, 
    }); 

Voici mon contrôleur

$data = $this->input->post('data'); 
$data = json_decode($data); 
foreach($data as $r) { 
    $this->excel->getActiveSheet()->fromArray(array(
    $r['duedate'], $r['customername'], $r['lotdesc'], $r['daysdue'], 
    $r['amountdue'], $r['amortdue'], $r['surcharge'], $r['vat'], $r['ips'], 
    $r['interest'], $r['principal'], $r['payments']), null, 'A' . $row 
); 
    $this->excel->getActiveSheet() 
       ->getStyle('A' . $row . ':L' . $row) 
       ->applyFromArray($styleArray2); 
    $this->excel->getActiveSheet() 
       ->getStyle('A' . $row . ':L' . $row) 
       ->applyFromArray($styleArray4); 
    $row ++; 
} 
+0

Pourquoi avez-vous mis processData et contentType ? Habituellement, vous n'avez besoin de définir que false si vous envoyez quelque chose comme un objet FormData. Et ne voulez pas que jQuery traite l'objet ou définisse le type de contenu (XHR sous-jacent le définirait). Essayez de supprimer ceux-ci et voir si cela aide. Aussi, vous auriez besoin de json_decode du côté php –

+0

Essayé de supprimer le cache, processData et contentType. Ajout de $ data = json_decode ($ data); au contrôleur et toujours rien. – Azis

+0

Pourquoi faites-vous également les appels data.substring()? Cela va gâcher le JSON en le malformant peut-être. –

Répondre

0

Votre oublié de convertir les données JSON dans un tableau associatif utilisent

json_decode($data,true); 
+0

Cela a fait l'affaire. Merci beaucoup! – Azis