0
我想將視圖中的一些數據傳遞給我的控制器,並從中創建CSV
文件。我在view
創建此代碼:通過ajax將數據從視圖傳遞到控制器
Button
生成CSV:
<a class="btn btn-primary" href="#" id="save-csv">Save to CSV</a>
休息的看法:
<script type="text/javascript">
var oUrl = '<?= $this->url('application/infraplk', array()); ?>';
var projects = JSON.stringify(<?php echo json_encode($this->projects) ?>);
var podmiot = JSON.stringify(<?php echo json_encode($this->podmiot) ?>);
$('#save-csv').on('click', function() {
var podmiotCSV = $('#type-select-Podmiot').val();
var projektCSV = $('#type-select-Projekt').val();
var typCSV = $('#type-select-Typ').val();
var statusCSV = $('#type-select-Status').val();
var errorsCSV = $('#type-select-Błędy').val();
var data = [];
if (podmiotCSV)
data.push(podmiotCSV);
if (projektCSV)
data.push(projektCSV);
if (typCSV)
data.push(typCSV);
if (statusCSV)
data.push(statusCSV);
if (errorsCSV)
data.push(errorsCSV);
//alert(data.length);
$.ajax({
type: "POST",
url: 'save-csv-file',
data: data
});
});
</script>
這是我的模型:
<?php
public function getValueToSaveCsv(array $data) {
//FOR EXAMPLE
print_r($data[0]);
}
?>
而且我的控制器:
<?php
public function saveCsvFileAction(array $data) {
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=infraplk.csv");
$data = $_POST;
$model = new \Application\Model\InfraPlk($this->getDbCbkAdapter());
$rows = $model->getValueToSaveCsv($data);
$fp = fopen("php://output", 'w');
fputcsv($fp, array_keys(get_object_vars($rows[0])));
foreach ($rows as $row) {
fputcsv($fp, get_object_vars($row));
}
fclose($fp);
$result = new ViewModel(array(
));
return $result->setTerminal(true);
}
?>
這是我第一次使用AJAX。真的不知道該怎麼做。有人可以幫忙嗎?
你的數據應該是一個對象,它此刻陣列。 –
在我已經讀過的文檔中,'data'可以是'PlainObject或者String或者Array' – speedvees
這個參數可以是數組。但數據需要以對象的形式存在。試試這個:data:{data:data} –