0
我想獲取表數據並將其存儲在數組中,並將其傳遞到控制器中,以便我可以使用PHP excel編寫。我試過使用其他數據,它的工作。現在,當我嘗試使用這個我的excel文件是空的。發送數組到AJAX和訪問傳遞的數據到Codeigniter中的控制器
這裏是我的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){
},
});
這裏是我的控制器
$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 ++;
}
你爲什麼要設置過程數據和的contentType ?通常,如果您發送類似FormData對象的東西,則只需將它們都設置爲false。並且不希望jQuery處理對象或設置內容類型(基礎XHR將設置它)。嘗試刪除這些,看看是否有幫助。你也需要在PHP端json_decode –
嘗試刪除緩存,processData和contentType。增加了$ data = json_decode($ data);到控制器仍然沒有。 – Azis
你爲什麼還在執行data.substring()調用?這會與JSON混淆,可能會造成它的惡化。 –