используйте вызов ajax для загрузки представления codeigniter - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь загрузить представление через ajax, передавая переменную post через контроллер, следующий мой ajax вызов:

 $('#image_id').on('click',function(){
    var image_id = $('#image_id').val();
    alert(image_id);
    if(image_id != '')

    {
        alert('called');
        $.ajax({
            url:"<?php echo site_url('Site/load_add')?>",
            method:"POST",
            dataType: "html",
            data:{add_id:image_id},
            success:function(data)
            {
                window.location.href = "<?php echo site_url('Site/load_add')?>";
            }
        });
    }
    else
    {
        alert('Error');
    }
});

Я использую add_id для извлечения данных из базы данных в мой контроллер ниже:

public function load_add()
{
    $this->load->model('Product_model');
    $data['advert_data']=$this->Product_model->get_specific_add($this->input->post('add_id'));

    $array_info2 = array(
        "title" => "View Add"
    );
    $this->load->view('include/header', $array_info2);
    $this->load->view('include/navbar_logged_in');
    $this->load->view('Site/site_load_add',$data);
    $this->load->view('include/footer');

}

Я получаю сообщение об ошибке при извлечении данных из БД, так как модель не имеет add_id. Ниже приведен код моей модели

 public function get_specific_add($image_id)

{
    $this->db->select('adverts.title,adverts.item_condition,adverts.add_type,adverts.address,adverts.price,adverts.negotiable,adverts.product_description,adverts.create_time, users.first_name,users.last_name,users.mobile,users.email,users.image_name');
    $this->db->from('adverts,countries,states,cities,users');
    $this->db->where('adverts.id= $image_id_new');
    $this->db->where('adverts.country_id=countries.id');
    $this->db->where('adverts.city_id=states.id');
    $this->db->where('adverts.area=cities.id');
    $this->db->where('adverts.user_id=users.id ');
    $this->db->where('adverts.id= $image_id');
    $query = $this->db->get();
    return $query->result();


}

Благодарю, если кто-то может мне помочь в этом. Страница, которую я пытаюсь загрузить, называется Site / site_load_add. Спасибо

Ответы [ 2 ]

0 голосов
/ 16 июля 2020

Спасибо всем за поддержку, я отсортировал это, передав идентификатор объявления ниже:

public function load_add($id)
{

    $this->load->model('Product_model');
    $data['advert_data'] = $this->Product_model->get_specific_add($id);
    $data['adverts'] = $this->Product_model->get_adverts();//get database query output to the array

    $array_info2 = array(
        "title" => "View Add"
    );
    $this->load->view('include/header', $array_info2);
    $this->load->view('include/navbar_logged_in');
    $this->load->view('Site/site_load_add', $data);
    $this->load->view('include/footer');
}

Спасибо

0 голосов
/ 11 июля 2020

Вы вызываете один и тот же URL-адрес с обоими GET|POST, первый вызов POST в порядке, но в GET это ваша ошибка.

$.ajax({
    // first call is OK!
    url:"<?php echo site_url('Site/load_add')?>",
    method:"POST",
    dataType: "html",
    data:{add_id:image_id},
    success:function(data)
    {
        // BUG HERE, This's a GET call and with No query string
        // Will `$this->input->post('add_id')` found nothing.
        window.location.href = "<?php echo site_url('Site/load_add')?>";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...