简体   繁体   English

通过Ajax将数据从视图传递到控制器

[英]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.

相关问题 将视图数据从控制器传递到 Ajax 视图文件 - Laravel 5 - Pass a View Data From Controller to Ajax View File - Laravel 5 Codeigniter返回从控制器获取数据以通过Ajax请求进行查看 - codeigniter return fetch data from controller to view via Ajax request 通过Laravel 5中的AJAX将View中的数据发布到Controller - POST data from View to Controller via AJAX in Laravel 5 通过 ajax onchange 事件将数据从 laravel 视图传递到控制器 - passing data from laravel view to controller via ajax onchange event 通过 Ajax 将数据从 Laravel 7 视图传递到 controller - Passing data from Laravel 7 view to controller via Ajax 如何通过CodeIgniter上的json从控制器传递数据以进行查看? - How to pass data from controller to view via json on CodeIgniter? 在Laravel 5.4中使用JQuery Ajax从控制器传递数据以进行查看 - Pass data from controller to view using JQuery Ajax in Laravel 5.4 如何在Laravel 5.6中使用Ajax从控制器传递数据以进行查看 - how to pass data from controller to view using ajax in laravel 5.6 Codeigniter获得ajax响应并将该数据从控制器传递到视图 - Codeigniter get ajax response and pass that data from controller to view 如何将数据从ajax传递到控制器,然后重新加载以查看页面 - how to pass data from ajax to controller then reload to view page
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM