2016-04-29 12 views
0

コードイグナイタにデータを挿入できるこのフォームがあります。それはバリデーションを持っています。私がしたいのは、それをajaxにすることだけです。どのように私はそれにajaxを置くことができますか?Codeigniter Ajaxでの挿入機能の有効化

私のコード、

コントローラ

// CREATE /////////////////////////////// //////////////////////////

public function create(){ 

    $this->form_validation->set_rules('PROVINCE','Province Name','trim|required|max_length[30]|callback_if_exist'); 

    if($this->form_validation->run($this) == FALSE){ 

     $this->add_view(); 
    }else{ 

     if($query = $this->Provinces_Model->insert()){ 
      redirect('Provinces/index'); 
     }else{ 
      $this->add_view(); 
     } 

    } 

} 

///////////チェックは

public function if_exist(){ 

    $available = $this->Provinces_Model->check_if_exist(); //change 

    if($available){ 
     return TRUE; 
    }else{ 

     $this->form_validation->set_message('if_exist','{field} already exist!'); 
     return FALSE; 

    } 

} 
を複製します

モデル

/// CREATE /////

バック

public function check_if_exist(){ 

    $sql = "SELECT * FROM $this->table WHERE PROVINCE = ?"; 
    $data = array('PROVINCE' => $this->input->post('PROVINCE')); 

    $query = $this->db->query($sql, $data); 

    if($query->num_rows() == 0){ 

     return TRUE; 
    }else{ 

     return FALSE; 
    } 

} 
を呼び出す////////////////////////////// ///////////////////////////

public function insert(){ 

    $input = array(
      'PROVINCE' => $this->input->post('PROVINCE') 
      ); 
    $insert = $this->db->insert($this->table,$input); 
    return $insert; 
} 

、最終的に私が持っているビュー

  <div class="box-body"> 
       <div class="form-group"> 
       <label for="PROVINCE" class="col-sm-2 control-label col-sm-offset-2">Province Name:</label> 
        <div class="col-sm-5"> 
        <input type="text" class="form-control" id="PROVINCE" name="PROVINCE" value = "<?= set_value("PROVINCE"); ?>"> 
        </div> 
       </div> 
       <div class="form-group has-error col-sm-offset-7"> 
       <label class="control-label" for="error"><?php echo form_error("PROVINCE"); ?></label> 
       </div> 
      </div> 

予告エラーが報告されました。value = "<?= set_value("PROVINCE"); ?>"は、値が検証をパスしなかった場合に挿入された値を保持しています..今、私はそれを練習としてajaxにしたいと思います。私がしようとしているext部分は、私がフォームを提出した後、それは別のフォームに行くでしょう。

+0

フォームの検証はAjaxでは機能しません。これを代わりに使用する http://jqueryvalidation.org –

答えて

0

編集し、以下のようなあなたのコード:

コントローラー:

public function create(){ 

    $this->form_validation->set_rules('PROVINCE','Province Name','trim|required|max_length[30]|callback_if_exist'); 

    if($this->form_validation->run() == FALSE){ 

     echo 'ERR'; 
    }else{ 

     if($query = $this->Provinces_Model->insert()){ 
      redirect('Provinces/index'); 
     }else{ 
      $this->add_view(); 
     } 

    } 

} 

とビューのJavascriptの一部:あなたは、このメソッドを使用したい場合は

<script type="text/javascript" > 
    $('#send').click(function(){ // you should add an id called "send" to your submit button 
    var province = $('#province').val(); 

     $.ajax({ 
      type:'POST', 
      url:'yourposturl', 
      data: province, 
      success:function(response){ 
       if (response = 'ERR') { 
       $("#response").html('Some error text'); 
       } 
       else { 
       $("#response").html('Some success text'); 
       } 
      } 
     }); 
     }); 
    </script> 

はまた<label class="control-label" id="response" for="error"><label class="control-label" for="error">一部を変更してください。

+0

リダイレクト( 'Provinces/index');もし私がこれを行うと、ページ全体が読み込まれますか? –

+0

その部分を削除します。挿入がOKの場合は、エコーを送信してください。 "OK"。 –

+0

私はそれを自分のデータテーブルにリダイレクトしたい –

関連する問題