代码之家  ›  专栏  ›  技术社区  ›  Fil

如何在使用ajax提交的codeigniter中使用form_validation验证表单数据

  •  1
  • Fil  · 技术社区  · 10 年前

    我正在用CodeIgniter编写代码

    ajax

      var formData = {};
      var url      = $(form_id).attr("action");
      $(form_id).find("input[name]").each(function (index, node) {
        formData[node.name] = node.value;
      });
      $(form_id).find('select[name]').each(function (index, node) {
        formData[node.name] = node.value;
      });
      $(form_id).find('textarea[name]').each(function (index, node) {
        formData[node.name] = node.value;
      });
      $.ajax({
        type: "POST",
        data: {
          'formdata': formData
        },
        url: url,
        dataType: 'json',
        success: function(result) {
          if (result.data) {
            make_alert();
          } else {
            $('#error-msg').html(result.message);
          }
        },
        error: function(result) {
         // error code here
        }
      });
    

    它将发送数据 formData 在控制器中添加功能

    add函数

    $this->load->helper(array('form', 'url'));
    $this->load->library('form_validation');
    $this->form_validation->set_rules('username', 'Username', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required',
            array('required' => 'You must provide a %s.')
    );
    $this->form_validation->set_rules('email', 'Email', 'required');
    

    而这部分在这里接收 表单数据 价值观

      $post_data = $this->input->post('formdata');
      $data = array (
        'username' => $post_data['username'],
        'email'    => $post_data ['email'],
        'password' => $post_data ['password']
      );
    

    这部分运行验证

    if ($this->form_validation->run() == FALSE) {
      $result['message'] = validation_errors();
    } else {
      $result['data'] = $this->ion_auth->register($data['identity'], $data['password'], $data['email'], $data['additional_data'], $data['group']);
    }
    

    哪个返回json

    echo json_encode($result);
    

    在使用ajax之前,代码运行平稳,没有问题,但在使用ajx时,验证器返回一条消息,指出字段应该是 必修的 ,也就是说,它不会接收提交的表单数据。

    这部分,

      $data = array (
        'username' => $post_data['username'],
        'email'    => $post_data ['email'],
        'password' => $post_data ['password']
      );
    

    使用时 var_dump() 在…上 $data 显示它收到了使用ajax提交的表单数据。

    我的问题是,如何验证这一点 $数据 使用formvalidation?

    1 回复  |  直到 10 年前
        1
  •  2
  •   Mhd Wael Jazmati    10 年前

    无法使用form_validation库进行验证 您应该使用if语句手动验证,并根据需要设置错误消息

    推荐文章