使用ajax进行Codeigniter表单验证

时间:2016-05-13 15:03:14

标签: ajax forms codeigniter

我希望在我的网站上使用带有Ajax的codeigniter提供一个评论框。如果评论成功显示新评论,我想要。否则显示验证错误。怎么做?

这是我的控制器表单验证

  if ($this->form_validation->run() == TRUE) {       
            $this->load->model('comment_model');
            $this->load->model('user_model');
           if($this->comment_model->insert_comment())
           {
               $data['user_comment']=  $this->user_model->get_user_session($this->session->userdata('user_id'));
               $data['new_comment']=  $this->comment_model->get_one_comment();
               $this->load->view('user/insert_comment',$data);
           }
        } else {
              echo validation_errors();
 }

这是我的ajax成功函数。

 success: function (data) {
                if (data)// this is what is need. How to make a if condition
                {
                    $('ol#update').prepend(data);
                    $('ol#update li:first').slideDown('slow');
                }
                else
                {

                    $('#myerror1').html(data);
                }

            }

1 个答案:

答案 0 :(得分:1)

从控制器返回Json的答案并在成功函数中解析它。

if ($this->form_validation->run() == TRUE) {       
    $this->load->model('comment_model');
    $this->load->model('user_model');
    if($this->comment_model->insert_comment()) {
      $data['user_comment']=$this->user_model->get_user_session($this->session->userdata('user_id'));
      $data['new_comment']=  $this->comment_model->get_one_comment();
      // third argument means, return template as string instead of echo.
      $data = $this->load->view('user/insert_comment',$data, TRUE);
      $array = array();
      $array['success'] = true;
      $array['data'] = $data;

    } else {
      $array = array();
      $array['success'] = false;
      $array['data'] = validation_errors();
    }
    echo json_encode($array);
}

成功功能:

success: function (data) {
   var jsonData = JSON.parse(data);
   if (jsonData.success == true) {
       $('ol#update').prepend(jsonData.data);
       $('ol#update li:first').slideDown('slow');
   }  else  {
      $('#myerror1').html(jsonData.data);
   } 
}