Как получить данные формы в контроллере Codeigniter с помощью ajax? - PullRequest
0 голосов
/ 27 сентября 2019

http://zivite.com/salary/

Привет, ребята, пожалуйста, перейдите по ссылке выше.Когда бы вы ни выбрали обозначение из выпадающего списка, в нем будут перечислены все данные, связанные с этим конкретным обозначением.

В данных цикла я добавил форму вокруг кнопки tr и submit, а также добавил некоторые дополнительные поля, такие какпосещаемость, кредит, ставка и т. д. Каждый раз, когда нажимаете кнопку отправки для конкретного человека.она должна храниться в моей таблице базы данных, которая называется таблицей зарплат.

Теперь моя проблема не в том, чтобы получить данные внутри модели, когда мы нажимаем кнопку отправки,

Если вы проверите ее, вы можетесм. массив создается там, но данные из отправленной формы отсутствуют. см. ссылку на изображение ниже https://ibb.co/h11SgMV

// view

<?php include "template/header.php"; ?><!-- Start Page content -->

    <div class="content">
        <div class="container-fluid">
            <div class="card-box">
                <form action="%3C?php%20echo%20base_url('con_employee/employeeSearch');%20?%3E" class="form-inline" method="post">
                    <div class="form-group" style="padding-right:10px; width:100%;">
                        <select class="custom-select" id="empDesignation" name="empDesignation">
                            <option selected>
                                Designation
                            </option><?php foreach($categories as $category){ ?>
                            <option value="<?php echo $category['cat_id']; ?>">
                                <?php echo $category['cat_name']; ?>
                            </option><?php } ?>
                        </select>
                    </div>
                </form><br>
                <div class="row">
                    <table class="table table-hover table-centered m-0 table-bordered">
                        <thead>
                            <tr>
                                <th>Name</th>
                                <th>Designation</th>
                                <th>Account Number</th>
                                <th>Attendance</th>
                                <th>Rate</th>
                                <th>Loan</th>
                                <th>Action</th>
                            </tr>
                        </thead>
                        <tbody id="salaryData"></tbody>
                    </table>
                </div>
            </div>
        </div><!-- container -->
    </div><!-- content -->
    <!-- end row -->
    <script>
    $(function() {


       $('#empDesignation').change(function() {
           var user_designation = $(this).val();
           if (user_designation == '') {
               $('#empName').prop('disabled', true);
           } else {
               $('#empName').prop('disabled', false);
               $.ajax({
                   url: "<?php echo site_url(); ?>con_salary/add_salary_for_employee",
                   type: "POST",
                   data: {
                       'user_designation': user_designation
                   },
                   dataType: 'json',
                   success: function(data) {

                       var html = '';
                       var i;
                       for (i = 0; i < data.length; i++) {
                           html += '<tr>' +
                               '<form class="" id="myform">' +
                               '<td>' + data[i].emp_name + ' <\/td>' +
                               '<td>' + data[i].cat_name + '<\/td>' +
                               '<td>' + data[i].emp_account_number + '<\/td>' +
                               '<td>' +
                               '<input type="text" class="form-control"  name="attendance" placeholder="Attendance" required>' +
                               '<\/td>' +
                               '<td>1<\/td>' +
                               '<td>' +
                               '<input type="text" class="form-control"  name="loan" placeholder="Loan" required>' +
                               '<\/td>' +
                               '<td>' +
                               '<a href="javascript:;" class="btn btn-primary item-edit" id="btnSave">Submit<\/a>' +
                               '<\/td>' +
                               '<\/form>' +
                               '<\/tr>';
                       }
                       $('#salaryData').html(html);

                       // $('#salaryData').html(data);
                   },
                   error: function() {
                       alert('No Data');
                   }

               });

           }
       });
    });


    //insert data to salary table
       $('#salaryData').on('click', '.item-edit', function() {
           $('#myform').attr('action', '<?php echo base_url() ?>con_salary/addSalary');

           var url = $('#myform').attr('action');
           var data = $('#myform').serialize();
           var attendance = $('input[name=attendance]');
           var loan = $('input[name=loan]');    


               $.ajax({
                   type: 'ajax',
                   method: 'POST',
                   url: url,
                   data: data,
                   async: false,
                   dataType: 'json',
                   success: function(response) {

                   },
                   error: function() {

                   }
               });

       });


    </script> <?php include "template/footer.php"; ?>

// controller

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Con_salary extends CI_Controller 
{

public function __construct(){
    parent:: __construct(); 


    $this->load->model('queries_salary');       
}


public function index()
{   $data['categories'] = $this->queries_salary->fetchCategory();
    $this->load->view('employee_salary_view',$data);
}


public function add_salary_for_employee()
{
   $designation_id=$this->input->post('user_designation');
    $users = $this->queries_salary->fetchEmployeeforsalary($designation_id);

    echo json_encode($users);


}

public function addSalary()
{
    $result = $this->queries_salary->addSalary();


    // $msg['success']=false;
    // $msg['type']='add';

    // if($result){
    //     $msg['success']=true;
    // }

    // echo json_encode($msg);

}


//end
}
?>

// модель

<?php 

class Queries_salary extends CI_Model
{

    public function fetchCategory()
    {
        $query= $this->db->get('category');
        return $query->result_array();
    }

    public function fetchEmployeeforsalary($designation_id)
{
    $this->db->where('emp_designation_id',$designation_id);
    $this->db->join('category','employee.emp_designation_id = category.cat_id');
    $query=$this->db->get('employee');


    if($query->num_rows()>0){
        return $query->result();
    }
    else{
        return false;
    }

    // $this->db->where('emp_designation_id',$designation_id);
    // $query=$this->db->get('employee');


}

public function addSalary()
{
    $field = array(
        'salary_attendance'=>$this->input->post('attendance'),
        'salary_loan'=>$this->input->post('loan')
    ); 


    print_r($field);
    exit();

    // $this->db->insert('salary',$field );
    // if($this->db->affected_rows()>0)
    // {
    //     return true;
    // }
    // else{
    //     return false;
    // }



}



//end
}?>

1 Ответ

0 голосов
/ 28 сентября 2019

Запрещается, чтобы форма была дочерней по отношению к элементам таблицы, tbody или tr HTML.Если попытка поместить его туда, это приведет к тому, что браузер переместит форму в нее, появится после таблицы. Так что в вашем случае форма приводит к пустым данным.

Здесь я немного изменил код вашего кода и будет работатьдля вас.

for (i = 0; i < data.length; i++) {
   html += '<tr class="user_data" >' +
       '<td>' + data[i].emp_name + ' <\/td>' +
       '<td>' + data[i].cat_name + '<\/td>' +
       '<td>' + data[i].emp_account_number + '<\/td>' +
       '<td>' +
       '<input type="text" class="form-control attendance"  name="attendance" placeholder="Attendance" required>' +
       '<\/td>' +
       '<td>1<\/td>' +
       '<td>' +
       '<input type="text" class="form-control loan"  name="loan" placeholder="Loan" required>' +
       '<\/td>' +
       '<td>' +
       '<a href="javascript:;" class="btn btn-primary item-edit" id="btnSave">Submit<\/a>' +
       '<\/td>' +                       
       '<\/tr>';
}

Сценарий нижней стороны

$('#salaryData').on('click', '.item-edit', function() {

   var url = '<?php echo base_url() ?>con_salary/add_salary_for_employee';
   var current_row = $(this).closest('.user_data');                   
   var data = { attendance: current_row.find('.attendance').val(), loan: current_row.find('.loan').val() };

   $.ajax({
       type: 'ajax',
       method: 'POST',
       url: url,
       data: data,
       async: false,
       dataType: 'json',
       success: function(response) {

       },
       error: function() {

       }
   });

});

Один Важное примечание : если вы используете одну форму и используете один и тот же тип ввода с тем же именемиспользуйте его как массив.

Например: name="loan[]"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...