2016-05-12 125 views
2

如果我不想刷新页面,我该如何在codeigniter中进行表单验证? 基本上我这样做:在codeigniter中使用jquery ajax进行表单验证

$config = array(
      array(
        'field' => 'c_name', 
        'label' => 'Name', 
        'rules' => 'trim|required' 
      ), 
      array(
        'field' => 'c_job', 
        'label' => 'Job', 
        'rules' => 'trim|required', 
        ) 
    ); 
    $this->form_validation->set_rules($config); 
    if($this->form_validation->run() == true) 
      { 
       $this->load->model('model'); 
       //..... 
      } 
    else{ 
      $this->load->view('view'); 
     } 

但是,如果我用Ajax发送数据和网页不刷新,我该怎么办表单验证?

编辑:

Thanks @ Amra Kojon。这是好作品,但新的问题是这样的:

if ($this->form_validation->run() == FALSE) { 
       echo validation_errors(); 
       } 
       else { 
         //echo 'hi'; 


         $value = $this->input->post('value'); 

         $values = array(
           'c_name' => $value['c_name'], 
           'c_job'=> $value['c_job'], 
           'c_address'=> $value['c_address'], 
           'c_phone'=> $value['c_phone'], 
           'c_mail'=> $value['c_mail'], 
           'c_state'=> $value['c_state'], 
           'c_intrest'=> $value['c_intrest'], 
           'c_added_info'=> $value['c_added_info'] 
         ); 


         $add = $this->customers_model->add_customer($values); 
         echo $add; 
       } 

如果我刚才说的回声在其他部分“东西”,它的工作原理,如果确认是好的,它呼应喜,但如果我写数据库主题(其中值数组有数据,而不是Ajax方式,它插入日期),它不起作用,其他部分不工作!

+0

如果您使用jQuery使用jQuery验证。 –

+0

在浏览器端简单使用Jquery验证,并在codeigniter中使用服务器端验证 –

回答

3

如果你给你的JS-的jQuery Ajax代码会更有效地理解您的问题。不要担心!尝试我的下列指令...

1)获取得到形式值并传递,以形成如图

<script type="text/javascript"> 
    $(document).ready(function(){ 
    var dataString = $("#FormId").serialize(); 
    var url="ControllerName/MethodName" 
     $.ajax({ 
     type:"POST", 
     url:"<?php echo base_url() ?>"+url, 
     data:dataString, 
     success:function (data) { 
      alert(data); 
     } 
     });  
    }) 
</script> 

控制器:

  • 装载库中构建form_validation as ...

    $ this-> load-> library('form_validation');

    $ this-> load-> helper('form');

  • 现在写你的控制器......

    function MethodName { 
    $this->form_validation->set_error_delimiters('', ''); 
    $this->form_validation->set_rules('fname','First Name', 'required'); 
    $this->form_validation->set_rules('lname','Last Name', 'required'); 
    $this->form_validation->set_rules('email','Email Address','required|valid_email|is_unique[sec_users.email]'); 
    if ($this->form_validation->run() == FALSE) { 
        echo validation_errors(); 
    } 
    else { 
        // To who are you wanting with input value such to insert as 
        $data['frist_name']=$this->input->post('fname'); 
        $data['last_name']=$this->input->post('lname'); 
        $data['user_name']=$this->input->post('email'); 
        // Then pass $data to Modal to insert bla bla!! 
    } 
    

    },因为它是在我的应用程序工作

  • 希望将工作。

    谢谢!

    +0

    Thanks @ Amra Kojon :)我更新了问题。请看。 – meph

    +0

    @ user1767712请你给你的HTML和型号代码,这将帮助我给出确切的解决方案。谢谢! –

    0

    如果您知道使用ajax传递数据,那么工作流程如下。

    1)通过ajax发送表单数据到您的控制器。

    2)现在进行表单验证。

    3)如果成功则“回声”值1

    4)如果失败,回波值0

    因此,使用在回声的值,就可以判断所述验证是否失败。我可以给你举个例子,如果你需要

    样品Ajax代码

    $('#form').on('submit', function(e){ 
        e.preventDefault(); 
        var data = $(this).serialize(); 
        $.ajax({ 
         url: 'your url', 
         type: 'POST', 
         data: data, 
         success: function(data){ 
          if(data == 1){ 
           $('#form')[0].reset(); 
           alret('success'); 
          } 
          else if(data == 0){ 
           alret('failed'); 
          } 
         }, 
         error: function(){ 
          alert('error'); 
         } 
        }); 
    }); 
    
    -1

    如果使用ajax,...你不能使用form_validation库 所以你可以验证客户端使用jquery ...并在服务器端应使用if语句来检查提交的数据

    +0

    不,不是这样的。你可以使用form_validation库来使用或不使用ajax。 –