[英]Pass data from view to controller via ajax
I would like to pass some data from view to my controller and create CSV
file from it. 我想将一些数据从视图传递到控制器,并从中创建CSV
文件。 I have created this code in my view
: 我已经在自己的view
创建了以下代码:
Button
that generates CSV: 生成CSV的Button
:
<a class="btn btn-primary" href="#" id="save-csv">Save to CSV</a>
Rest of the view: 其余视图:
<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>
This is my model: 这是我的模型:
<?php
public function getValueToSaveCsv(array $data) {
//FOR EXAMPLE
print_r($data[0]);
}
?>
And my controller: 而我的控制器:
<?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);
}
?>
It's the first time i'm using AJAX. 这是我第一次使用AJAX。 And really don't know what to do. 而且真的不知道该怎么办。 Can somebody help? 有人可以帮忙吗?
You can try: 你可以试试:
$.ajax({
type:"POST",
url:'save-csv-file',
data: {data: data},
success: function(response){
//do success action here
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.