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

标签 javascript php jquery ajax codeigniter

我正在使用 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 以在 Controller 中添加功能

添加函数

$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');

这部分接收 formData

  $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 之前,代码运行顺利没有问题,但是当使用 ajax 时,验证器返回一条消息说字段应该是 required,这意味着它不接收提交的表单数据。

这部分,

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

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

我的问题是,如何使用 form_validation 验证此 $data

最佳答案

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

关于javascript - 如何在使用ajax提交的codeigniter中使用form_validation验证表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37183744/

相关文章:

javascript - 对 cors 和 fetch 以及何时发出选项请求感到非常困惑

javascript - 图像轮播 onmouseover data-slide-to

php - 将数据从一个数据库插入另一台服务器上的另一个数据库 - 服务器未链接

php - 在悬停时显示来自谷歌图像搜索的数据属性的图像

javascript - Chrome 扩展 "$ is not defined"错误

javascript - 这个 jquery 不工作

c# - YUI AJAX 和 .Net MVC

php - 如何链接并显示来自两个不同表的MySQL数据?

php - 使用具有可复制输入的 jquery ajax 上传图像

jquery - $( "<div/>").text( message ) 中的选择器语法意味着什么