在AJAX表单提交中进行Codeigniter表单验证

时间:2017-11-08 15:04:28

标签: ajax codeigniter validation

请帮帮我。

我最近一直在使用Codeigniter表单验证而不使用AJAX并且工作正常,我只需要为每个字段添加$form_error,并将所有内容添加到那里。所以,我在javascript方面并不擅长并且真的很混淆如何显示每个输入字段的错误响应,因为当我使用AJAX时,我唯一的想法就是将响应放在像$(#error-info)这样的选择器中

到目前为止,这是我的工作

在我的控制器中

$this->_rules();

        if($this->form_validation->run() == FALSE) 
            $msg = array(
            'name' => form_error('name'),
            'phone' => form_error('phone'),
            'email' => form_error('email')
        );
        echo json_encode($msg);

和我的ajax:

<script type="text/javascript">
  $(document).ready(function() {

  $('#frm').submit(function(){
  $.post($('#frm').attr('action'), $('#frm').serialize(), function( data ) {
    console.log(data);
  }, 'json');
  return false;     
   });
});
</script>

响应看起来像这样

{"name":"<small class=\"text-danger\">The name field is required.<\/small>","phone":"<small class=\"text-danger\">The phone field is required.<\/small>","email":"<small class=\"text-danger\">The email field is required.<\/small>"}

请给我一个提示。有什么方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效(未经过测试):

PHP

$msg = array(
    'name' => form_error('name'),
    'phone' => form_error('phone'),
    'email' => form_error('email')
);

echo json_encode(array('status' => 'error', 'response' => $msg));

AJAX

我们假设$msg数组的索引与实际ID匹配,例如id='email'所以我们可以在字段之后传播错误消息。

$(document).ready(function () {
    $('#frm').submit(function () {
        $.post($('#frm').attr('action'), $('#frm').serialize(), function (res) {
            var data = JSON.parse(res);
            if (data.status == 'error') {
                $.each(data.response, function(item_id, item_error_msg) {
                    $('#'+item_id).after().html(item_error_msg);
                });
            } else {
                alert(data.response);
            }
        }, 'json');
        return false;
    });
});