我试图使用post方法将值从ajax传递到codeigniter控制器,但它返回void

时间:2019-03-07 11:53:55

标签: javascript php jquery ajax codeigniter

我尝试使用post方法将ajax值存储在codeigniter控制器变量中,我在控制器中使用了$ this-> input-> post方法,但控制器中的变量未获取ajax值,该变量返回为null,帮我找到解决此错误的方法,谢谢。

代码如下:

查看:

<button type="button" class="btn btn-info btn-md edit-pdt" data-pid="<?php echo $row->product_id;?>"><i class="fa fa-pencil"></i></button>

控制器:

public function displayprodt()
    {
        $pid= $this->input->get('pid');
        $data = array(
            'title' => "Edit Product",
            'result' => $this->ProductModel->displayprodt($pid)
        );
        $this->load->view('header',$data);
        $this->load->view('navbar');
        $this->load->view('sidebar');
        $this->load->view('editproduct',$data);
        $this->load->view('footer');
    }

jQuery:

$('.edit-pdt').click(function(){
        var base_url = $("#base_url").val();
        var pid = $(this).attr("data-pid");
        alert(pid);
        $.ajax({
           type: "GET",
           url: base_url+"index.php/Product/displayprodt",
           data: ({pid: pid}),
           success: function(response) {
             location.href = base_url+"index.php/product/displayprodt";
           }
        });
  });

型号:

public function displayprodt($pid){
        $this->db->select("*");
        $this->db->from("todaysdeal_products");
        $this->db->where("product_id",$pid);
        $query = $this->db->get();
        return $query->result();
    }

3 个答案:

答案 0 :(得分:0)

您正在使用$this->input->post('pid'),那么您必须在ajax中使用POST。
更改

1: type: "GET", to type: "POST",
2: data: ({pid: pid}), to data: {pid: pid},

答案 1 :(得分:0)

问题是您的页面重定向了第一个请求返回的内容。请尝试将location.href = base_url+"index.php/product/displayprodt";替换为console.log(response);alert(response);

答案 2 :(得分:0)

我认为您需要创建控制器来控制ajax数据,我会举一个例子:

控制器

public function displayprodt()
{
      $pid = $this->input->post('pid',true);

           $data=array(
                'error' =>false,
                'title' => 'Edit Product',
                'result' => $this->ProductModel->displayprodt($pid),
            );


      header('Content-Type: application/json');
      echo json_encode($data ,JSON_PRETTY_PRINT);
}

模型

public function displayprodt($pid){
        $this->db->select("*");
        $this->db->from("todaysdeal_products");
        $this->db->where("product_id",$pid);
        $query = $this->db->get();
        return $query->result();
    }

jQuery

$('.edit-pdt').click(function(){
        var base_url = $("#base_url").val();
        var pid = $(this).attr("data-pid");
        alert(pid);
        $.ajax({
           type: "POST",
           url: base_url+"index.php/Api/displayprodt",
           data: ({pid: pid}),
           dataType: "JSON",
           success: function(response) {
             location.href = base_url+"index.php/product/displayprodt"; // or any url you want redirect.
           }
        });
  });

希望您能找到解决方法:')