【问题标题】:Codeigniter Ajax on insert function with validationCodeigniter Ajax 关于插入功能的验证
【发布时间】:2017-06-17 22:15:55
【问题描述】:

我有这个表格,我可以在代码点火器上插入数据。它有验证,我想做的就是让它成为ajax。我怎样才能把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;
    }

}

///// 创建 /////////////////////////////////// ///////////////

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 = "&lt;?= set_value("PROVINCE"); ?&gt;" 用于保留我插入的值,如果它的值没有通过验证。现在我想把它作为一种实践,因为下一部分我要这样做是在我提交表单后,它会转到另一个表单。

【问题讨论】:

标签: javascript php jquery ajax codeigniter


【解决方案1】:

编辑您的代码,如下所示:

控制器:

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>

如果您想使用此方法,请将&lt;label class="control-label" for="error"&gt; 部分更改为&lt;label class="control-label" id="response" for="error"&gt;

【讨论】:

  • redirect('省/索引');如果我这样做,整个页面会加载吗?
  • 删除该部分,如果插入正常,只需发送一个回显,例如“好的”。
  • 我想要的是将它重定向回我的数据表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
相关资源
最近更新 更多