使用 ajax 调用加载视图 codeigniter
Posted
技术标签:
【中文标题】使用 ajax 调用加载视图 codeigniter【英文标题】:use ajax call to load a view codeigniter 【发布时间】:2020-07-11 07:21:46 【问题描述】:我正在尝试通过 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');
我在从 DB 检索数据时遇到错误,因为模型没有 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。谢谢
【问题讨论】:
你在$data['advert_data']
中得到了什么?是您期望的正确数据吗?
你得到 $this->input->post('add_id');在load_add()
?
Product_model->get_specific_add,没有得到post变量add_id,所以页面返回数据库错误。 $this->db->where('adverts.id= $image_id');,$image_id 在我的 ajax 请求中不包含 add_id。
你得到 $this->input->post('add_id');在 load_add() 中?没有返回任何东西......
所以问题来了,先获取 $this->input->post('add_id');这个。
【参考方案1】:
你已经用两个GET|POST
调用了相同的url,第一次调用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')?>";
【讨论】:
这是你的答案? OP 不会通过 ajax 调用在function load_add()
中发送image_id
。
在 ajax 调用是可以的,但是在 ajax 成功有window.location.href
再次调用load_add
。
那么 OP 是做什么的?
认为window.location.href = "<?php echo site_url('Site/load_add')?>"
是错误的,可能是<?php echo site_url('Redirect to some url')?>
或者不是<?php echo site_url('Site/load_add?add_id=123')?>
然后在load_add
检查input->get|post(add_id)
【参考方案2】:
感谢大家的支持,我通过以下广告的 ID 进行排序:
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');
谢谢
【讨论】:
以上是关于使用 ajax 调用加载视图 codeigniter的主要内容,如果未能解决你的问题,请参考以下文章
在 codeigniter 中使用 AJAX 从视图调用控制器函数并从 db 检索行
使用ajax在codeigniter控制器中调用函数不起作用
jquery Ajax 调用 Codeigniter 控制器
如何使用 CodeIgniter 中的 AJAX 函数更改网页的数据