Данные Ajax не отправляются в функцию контроллера (CodeIgniter) - PullRequest
0 голосов
/ 31 августа 2018

У меня есть тег привязки, и я хотел бы, чтобы его data-id был отправлен функции в контроллере, которая, в свою очередь, извлекала данные из базы данных через модель. Однако данные не проходят через контроллер. Ответ Ajax показывает, что данные были отправлены, но контроллер показывает иначе.

Вот мой код Ajax:

$(document).on("click",".learn-more",function(){
   var sub_item_id = $(this).data("id");
   $.ajax({
      url:"<?php echo base_url();?>Designs/business_cards",
      type:"POST",
      data:{sub_item_id:sub_item_id},
      success:function(data){
          console.log(data);
      },
      error: function(error){
        throw new Error('Did not work');
      }
   })
}); 

Я установил тип данных: "json", но данные не отправлялись, поэтому я удалил тип данных, и он работал, часть ajax. По крайней мере, ответ показал, что данные были отправлены. Мой контроллер код:

function business_cards(){
    $id = $this->input->post('sub_item_id');
    $data['quantity'] = $this->subproduct_model->get_quantities($id);
    $this->load->view('category/business-cards',$data);
}

Моя модель код:

public function get_quantities($sub_item_id){   
     $this->db->select('quantities');
     $this->db->where('id',$sub_item_id);
     $query = $this->db->get('sub_products');
     return $query->result_array();
}

HTML-код, включающий тег привязки

<?php foreach ($results as $object):?>
<a href="#" data-toggle="modal" data-id="<?=$object['id'];?>" data-target="#pricelist-modal-2" class="learn-more">View Prices</a>
<?php endforeach?>

data-id отображает правильное значение согласно итерации.

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

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

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

Примечание: вы не можете использовать входное сообщение , потому что вы не используете форму.

function business_cards($id){ //put a parameter here, serve as container of your passed variable from **ajax**
    //$id = $this->input->post('sub_item_id');
    $data['quantity'] = $this->subproduct_model->get_quantities($id); //pass the id to your model
    $this->load->view('category/business-cards',$data); 
}

измените свой код Ajax на этот ..

  $(document).on("click",".learn-more",function(){
     var sub_item_id = $(this).data("id");
     $.ajax({
        url:"<?php echo base_url('Designs/business_cards/"+sub_item_id+"');?>", //pass the id here
        type:"POST",
        success:function(data){
            console.log(data);
        },
        error: function(error){
          throw new Error('Did not work');
        }
     })
  });
0 голосов
/ 01 сентября 2018

Я только что скопировал ваш код и смог получить значение в контроллере. В вашей функции контроллера сделайте var_dump ($ id). Затем в инструментах разработчика (F12) проверьте консоль. Поскольку у вас есть console.log (data), переменная var_dump должна находиться в консоли. Он не будет отображаться на экране.

Что еще нужно проверить:

Есть ли у вашего БД записи с этим идентификатором? Может ли ваш массив результатов db быть пустым, потому что это действительно должно быть?

Вы уверены, что data-id действительно имеет значение, когда вы щелкаете по тегу?

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