2016-04-29 104 views
0

我有這種形式,我可以在代碼點火器上插入數據。它有驗證,我想要做的就是讓它成爲ajax。我怎麼能把阿賈克斯呢?Codeigniter Ajax插入功能與驗證

我的代碼,

控制器

//創建/////////////////////////////// //////////////////////////

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; 

    } 

} 

型號

///再打

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; 
    } 

} 

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

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,因爲n我將要做的內部部分是在我提交表格之後,它會轉到另一個表格。

+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" for="error">部分<label class="control-label" id="response" for="error">,如果你想用這種方法。

+0

redirect('Provinces/index');如果我這樣做,整個頁面會加載? –

+0

刪除該部分,如果插入正常,則只發送回聲。 「好」。 –

+0

我想要的是將其重定向回我的數據表 –