ajax - 使用ajax将值从一个控制器视图传递到另一个控制器视图的codeigniter
问题描述
我正在开发我想传递dashboard a href data-id
给的 Web 应用程序,redeem index
但问题是在 Windows 位置 href 兑换视图后redeem index
没有显示帖子值吗?vendors_id
仪表板视图
<a class="vendor_click_redeem_page" data-id="123">Test</a>
AJAX
$( document ).ready(function() {
$('.vendor_click_redeem_page').click(function(){
var vendors_id = $(this).attr("data-id");
$.ajax({
url: "redeem/index",
type: "POST",
dataType: "text",
data: {vendors_id: vendors_id},
success: function(text) {
window.setTimeout(function() {
window.location.href = "redeem/index"
}, 1500)
}
//return false;
});
});
兑换控制器
class Redeem extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->helper('url');
$this->load->model("Redeem_model");
}
public function index()
{
if($this->input->post('vendors_id') && $this->session->userdata('user_id') !="") {
$data['vendor_id']= $this->input->post('vendors_id');
$page_data['page_name'] = "redeem/redeem";
$page_data['asset_page'] = "redeem";
$this->load->view('front/redeem/index', $data);
} else {
redirect('/');
}
}
}
兑换视图
<?php echo $vendors_id;?>
解决方案
在您的 Ajax 成功中,您正在重定向。这不是 Ajax 方式,在这种方式中,您通常只想操作 DOM 的一部分,而其他一切都保持不变。
在 codeigniter 中,您可以将视图作为数据返回,它通过控制器获取您的 id。然后您可以输出视图数据以将其发送到您的 Ajax 成功。在那里,您获取该文本并更新您想到的 dom 元素
把它们放在一起:
看法:
<a class="vendor_click_redeem_page" data-id="123">Test</a>
<div class"vendor_html"></div>
控制器:
public function index()
{
if($this->input->post('vendors_id') && $this->session->userdata('user_id') !="") {
$data['vendor_id']= $this->input->post('vendors_id');
$page_data['page_name'] = "redeem/redeem";
$page_data['asset_page'] = "redeem";
echo $this->load->view('front/redeem/index', $data, true);
} else {
redirect('/');
}
}
阿贾克斯:
$.ajax({
url: "redeem/index",
type: "POST",
dataType: "text",
data: {vendors_id: vendors_id},
success: function(text) {
$('.vendor_html').html(text);
}
注意:您的示例视图代码有一个错字:应该是<?php echo $vendor_id;?>
;
文档: jQuery Ajax