2017-10-05 51 views
0

我已经创建了一个用于捐款的表单,当用户进行捐赠时,他将查看错误,或者如果成功将能够看到第二页上的表单将会加载。现在的问题是,当我测试数据在数据库以及后端正确更新时,一切工作正常。问题是,Ajax没有得到返回数据我已经放置了一个加载器成功加载程序将被隐藏,它不工作它不断加载,但没有得到返回数据任何人都可以帮我解决这个错误对我来说,请在这里是我的代码在提交时会一直加载,但不会返回数据

这是我的javascript

$(document).ready(function() { 
    $('.donate').on('submit', function(e) { 
     $('.load').fadeIn(500); 
     var formData = new FormData(this); 
     console.log(formData); 
     $.ajax({ 
      url   : "http://mydomainname.com/directory/user/makedonation", 
      type  : "POST", 
      data  : formData, 
      contentType : false, 
      cache  : false, 
      processData : false, 
      success  : function(data) { 
       $('.load').fadeOut(500); 
       console.log(data.status); 
       $('.donation_form').html(data); 
      } 
     }); 
    }); 
}); 

这是我的控制器user.php的其中数据正在被处理

public function makedonation() { 
    $comments = $this->input->post('comments'); 
    $user_data = $this->get_data->user_info($this->session->userdata('uid')); 
    $class  = $this->db->get_where('classes', array('id' => $user_data->row()->membership)); 
    $amount = $class->row()->ammount_pay; 
    $data  = array(
     'user_id' => $user_data->row()->uid, 
     'amount'  => $class->row()->ammount_pay, 
     'rcv_amount' => $class->row()->ammount_receive, 
     'class_id' => $class->row()->id, 
     'comments' => $comments 
    ); 

    $rt_data = $this->data_insert->donate_user($data); 
     $rcv_data = $this->get_data->user_info($rt_data['receiver_id']); 
     $name  = $rcv_data->row()->first_name . " " . $rcv_data->row()->last_name; 
     $view_data = array(
      'user_id'  => $user_data->row()->uid, 
      'receiver_id' => $rt_data['receiver_id'], 
      'transaction_id' => $rt_data['transaction_id'], 
      'comments'  => $comments, 
      'name'   => $name, 
      'amount'   => $class->row()->ammount_pay, 
      'command'  => 'Confirm Donation' 
     ); 

     $this->load->view('user/includes/get_data', $view_data); 
} 

在这里数据被插入到数据库

模态
public function donate_user($data) { 
      $donation_data = array(
       'user_id'   => $data['user_id'], 
       'amount'   => $data['amount'], 
       'receive_ammount' => $data['rcv_amount'], 
       'date_deposit' => date('m-d-Y'), 
       'time_deposit' => date('h:i A'), 
       'class'   => $data['class_id'], 
       'status'   => 'Submitted' 
      ); 
      $insert_donation = $this->db->insert('donation', $donation_data); 
      $transaction_id = $this->db->insert_id(); 

      $rt_data = array(
        'message'  => 'Success', 
        'transaction_id' => $transaction_id, 
        'receiver_id' => $receiver->row()->user_id 
       ); 

      return $rt_data; 
     } 

现在,这里是我的困惑,如果数据被正确地插入到数据库中,并且还当我在浏览器中单独运行此文件,我指的是我的控制器第二页加载正确没有发现错误的原因阿贾克斯没有返回数据

+0

你什么时候提交表单和一件事情,你应该改变ajax paramerter'typ:'POST''到'method:'POST'' – JSingh

+0

而不是'$ this-> load-> view('user /包含/ get_data',$ view_data);',返回'donate_user($ data)'或创建另一个方法来处理ajax请求ant此方法应该返回'donate_user($ data)' – JSingh

+0

完成但仍然相同..在我的控制器当我评论$ this-> load-> view('user/includes/get_data',$ view_data);只是放在回声“你好世界”它正在工作然后 –

回答

0

这是你的答案。您必须将您的ajax返回数据设置为json,并在您的控制器中执行以下操作。

$(document).ready(function() { 
    $('.donate').on('submit', function(e) { 
     $('.load').fadeIn(500); 
     var formData = new FormData(this); 
     console.log(formData); 
     $.ajax({ 
      url   : "http://mydomainname.com/directory/user/makedonation", 
      type  : "POST", 
      data  : formData, 
      contentType : false, 
      cache  : false, 
      processData : false, 
dataType: 'json', 
      success  : function(data) { 
       $('.load').fadeOut(500); 
       console.log(data.status); 
       $('.donation_form').html(data.response); 
      } 
     }); 
    }); 
}); 

控制器代码

public function makedonation() { 
    $comments = $this->input->post('comments'); 
    $user_data = $this->get_data->user_info($this->session->userdata('uid')); 
    $class  = $this->db->get_where('classes', array('id' => $user_data->row()->membership)); 
    $amount = $class->row()->ammount_pay; 
    $data  = array(
     'user_id' => $user_data->row()->uid, 
     'amount'  => $class->row()->ammount_pay, 
     'rcv_amount' => $class->row()->ammount_receive, 
     'class_id' => $class->row()->id, 
     'comments' => $comments 
    ); 

    $rt_data = $this->data_insert->donate_user($data); 
     $rcv_data = $this->get_data->user_info($rt_data['receiver_id']); 
     $name  = $rcv_data->row()->first_name . " " . $rcv_data->row()->last_name; 
     $view_data = array(
      'user_id'  => $user_data->row()->uid, 
      'receiver_id' => $rt_data['receiver_id'], 
      'transaction_id' => $rt_data['transaction_id'], 
      'comments'  => $comments, 
      'name'   => $name, 
      'amount'   => $class->row()->ammount_pay, 
      'command'  => 'Confirm Donation' 
     ); 

     $result = $this->load->view('user/includes/get_data', $view_data,true); 
$this->output->set_content_type('application/json')->set_output(json_encode(array('response' => $result,'status'=>'success'))); 

} 

您可以阅读https://www.codeigniter.com/userguide3/libraries/output.html输出和变量返回查看基于视图笨功能设置为最后一个参数为真。

+0

你真棒竖起大拇指给你我不知道这件事真的帮了我很多谢谢你soo –

+0

这是用mvc框架处理ajax请求的最好方法。 。谢谢 –

相关问题