2016-05-13 10 views
0

Ajaxでcodeigniterを使用して私のWebサイトにコメントボックスを作成したいと思います。コメントの成功が新しいコメントを示す場合、私は欲しいです。それ以外の場合は、検証エラーです。どうやってするの?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

コントローラからの応答を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); 
    } 
} 
関連する問題