Как я могу передать две переменные в Ajax URL контроллеру codeigniter?

#javascript #php #jquery #ajax #codeigniter

#javascript #php #jquery #ajax #codeigniter

Вопрос:

Я работаю над системой управления школой. Я просто создаю данные об учениках по их классу и разделу. Я использую ajax codeigniter controller, но я не могу передать две переменные в вызове ajax для выполнения поиска по двум параметрам.

Мой Ajax-код

 <script>
                $(document).ready(function () {
                    $('#example').DataTable({
                        'paging': true,
                        'searching': true,
                        'ordering': true,
                        'autoWidth': false
                    });
                    $('#student').click(function (event) {
                        event.preventDefault();
                        var xclass = $('.sclass').val();
                        var section = $('.section').val();

                        //
                        $.ajax({
                            url: "<?php echo base_url(); ?>Admission/fetchStudent/",
                            type: "POST",
                            data: {'xclass': xclass, 'section':section},
                            datatype: 'json',
                            success: function (data) {
                                $("#resultlist").html(data);
                            }
                        });
                    });
                }); //event.preventDefault(); 

            </script>
  

Мой контроллер

 public function fetchStudent($class,$section){
    $this->load->model('Admission_model');
    $data = $this->Admission_model->fetchStudentmodel($class,$section);
    echo '<pre>';
    print_r($data);
    exit();
    echo json_encode($data);
}
  

Моя модель

 public function fetchStudentmodel($x,$y) {
    $uid = $this->session->userdata('user_id');
    $data = $this->db->select('*')
            ->from('student')
            ->where(['user_id' => $uid,'class'=>$x, 'section'=>$y])
            ->get();

    if ($data->num_rows() > 0) {
        return $data->result();
    } else {
        return 'No data Available';
    }
}
  

Посмотрите на это изображение, тогда вы сможете понять, что я хочу сделать введите описание изображения здесь

Комментарии:

1. Вы хотите передать URL-адрес или как значение POST?

2. Сэр, я хочу передать две переменные в Ajax URL, например URL: «<?php echo base_url(); ?>Admission/fetchStudent/» xclass,

3. вы отправляете только 1 параметр data: {'xclass': xclass} и вы также не используете это значение в своем контроллере, я думаю, вы используете slug из URL.

4. Сэр, я также должен был использовать {‘xclass’: xclass, ‘section’: section}, но у меня не получилось

5. попробуйте с {xclass:xclass, section:section}

Ответ №1:

В вашем случае вы можете передать 2 значения в параметрах следующим образом:

 data: { key1: value1, key2: value2 }
  

И вы можете получить их в своем контроллере, используя $_POST

Но в вашем примере вы отправляете только 1 параметр и не получаете его в своем контроллере, вы используете свой URL-адрес для получения класса.

В вашем файле контроллера вы можете просто получить значения в $_POST , вы можете проверить оба значения с помощью:

 echo '<pre>';
print_r($_POST);
  

Вы получите оба ваших значения в, $_POST затем вы сможете получить доступ с помощью $_POST['key1'] или $_POST['key2']

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

Второе решение для вашего примера: var xclass = $(‘.sclass’).val(); var section = $(‘.section’).val();

 data: 'class=' xclass 'amp;section=' section, // here you can use quote and amp; for separation.
  

Ответ №2:

Попробуйте это,

 $.ajax({
      url: "<?php echo base_url(); ?>Admission/fetchStudent/",
      type: "POST",
      data: ({xclass: xclass, section:section}),//changes
      datatype: 'json',
      success: function (data) {
             $("#resultlist").html(data);
      }
 });
  
 public function fetchStudent(){//changes
    $this->load->model('Admission_model');
    $class  = $this->input->post('xclass');//changes
    $section  = $this->input->post('section');//changes
    $data = $this->Admission_model->fetchStudentmodel($class,$section);
    echo '<pre>';
    print_r($data);
    exit();
    echo json_encode($data);
}
  

Комментарии:

1. $_POST('xclass') я думаю, это создаст проблему, проверьте другой ответ.