コードイグナイタにデータを挿入できるこのフォームがあります。それはバリデーションを持っています。私がしたいのは、それを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部分は、私がフォームを提出した後、それは別のフォームに行くでしょう。
フォームの検証はAjaxでは機能しません。これを代わりに使用する http://jqueryvalidation.org –