【问题标题】:php -ajax function not sending data to controllerphp -ajax 函数不向控制器发送数据
【发布时间】:2020-03-25 00:09:11
【问题描述】:

Ajax 功能:我可以在 ajax 中获取 id 但无法发送到控制器。控制器正在调用,但我没有在控制器中获取数据。

function select_report()
     {
      var re_id =  $('#report_id').val();
          // ajax adding data to database
          alert(re_id);
         $.ajax({
            url : "<?php echo site_url('Homepage/category/');?>",
            type: "POST",
            data: {'re_id':re_id},
           success: function(data)
           {
              window.location.href = "<?php echo site_url('Homepage/category/'); ?>";
           },
           error: function (jqXHR, textStatus, errorThrown)
           {
              alert('Error');
           }
       });
     }

控制器功能:

public function category()
    {
        $this->load->model('main_model');
        $this->load->library('session');
        $this->load->helper('url');
        $re_id=$this->input->post('re_id');
        print_r($re_id);
        print_r("Welcome");
        exit();
        $data['report']=$this->main_model->select_report($re_id);
        //Code to load header&footer
        $this->load->view('templates/header');
        $this->load->view('category.php',$data);
        $this->load->view('templates/footer');
    }

【问题讨论】:

  • 在 javascript 中,使用 data : {re_id: re_id} 代替 data : {'re_id': re_id}
  • 谢谢,但这也行不通...
  • 你的网址错误。
  • 你为什么使用:url:"",而不是 url:"page.php" 或 url:"/homepage/类别/"
  • 我打电话给我的控制器,我的控制器是“主页”,“类别”是功能。控制器调用没有问题,但我无法在控制器中获取 id。

标签: php ajax codeigniter controller


【解决方案1】:

尝试并检查。

function select_report()
{
     var re_id =  $('#report_id').val();
     $.ajax({
        url: '<?php echo base_url();?>Homepage/category/',
        async: false,
        type: 'POST',
        data: {re_id : re_id},
        dataType: 'html',
        success: function(data) {
           console.log(data);
         }
   });

}

希望这对你有用。

【讨论】:

  • 谢谢你,但是当尝试它给出的错误未找到。
【解决方案2】:

我们无法在 ajax 请求中加载视图。为此,我们使用了另一种方法

 function select_report()
    {
      var re_id =  $('#report_id').val();
      // ajax adding data to database
      alert(re_id);
       $.ajax({
          url : "<?php echo site_url('homepage/category/');?>",
          type: "POST",
          data: {'re_id':re_id},
          dataType: 'json',
           success: function(data)
           {
              console.log(data);
              if(data==true){
                window.location.href = "<?php echo site_url('homepage/category_demo/'); ?>"+re_id;
              }else{
                alert('Error');
              }
           },
           error: function (jqXHR, textStatus, errorThrown)
           {
              alert('Error');
           }
      });
    }

在控制器中

public function category()
    {
        $this->load->library('session');
        $this->load->helper('url');
        $re_id=$this->input->post('re_id');
        $report=$this->main_model->select_report($re_id);
        if(count($report)>0){
            echo json_encode(true);
        }else{
            echo json_encode(false);
        }       

    }
    public function category_demo($re_id){
        $data['report']=$this->main_model->select_report($re_id);
        $this->load->view('templates/header');
        $this->load->view('category.php',$data);
        $this->load->view('templates/footer');
    }

【讨论】:

  • 感谢您的帮助...但不工作...首先 dataType="json" 不工作它给出了错误。当我删除 dataType="Json" 并尝试显示数据为空时,否则正在成功函数中执行。
  • 移除 dataType="Json" 并解析结果,成功:function(data) { console.log(data); if(JSON.parse(data)==true){ window.location.href = ""+re_id; }else{ 警报('错误'); } },
【解决方案3】:

如果您使用 Chrome 浏览器,请检查标签 Network 并检查哪些标头数据发送到服务器。是否有您想要发送到控制器的数据,并检查该 URL 的响应是什么。请同时检查响应 HTTP 状态

然后检查您的服务器端,确保 URL 可以转到您的控制器。您可以在方法代码中 die('Test') 以确保该请求触及您的代码。

我认为问题出在您的网址。

【讨论】:

  • 我调试了 .我在 header 中看不到任何数据。网址工作正常,但数据为空
  • 服务器的响应是什么?
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 2018-12-22
  • 2014-04-26
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多