首页 > 解决方案 > 使用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;?>

标签: ajaxcodeignitercontroller

解决方案


在您的 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


推荐阅读