繁体   English   中英

Codeigniter Ajax表单验证错误

[英]Codeigniter ajax form validation error

我研究了此代码,可以使用ajax进行验证。

我的控制器是:

public function create(){


    $data = array('success' => false, 'messages' => array());

    $this->form_validation->set_rules('PROVINCE','Province Name','trim|required|max_length[30]|callback_if_exist');
    $this->form_validation->set_error_delimiters('<p class="text-danger"','</p>');

    if($this->form_validation->run($this)){

        $data['success'] = true;
    }else{
        foreach ($_POST as $key => $value) {
            # code...
            $data['messages']['key'] = form_error($key);
        }
    }

    echo json_encode($data);
}

我的JavaScript是:

<script>
    $('#form-user').submit(function(e){
        e.preventDefault();

        var me = $(this);

        // perform ajax
        $.ajax({
            url: me.attr('action'),
            type: 'post',
            data: me.serialize(),
            dataType: 'json',
            success: function(response){
                if (response.success == true){
                    alert('success');
                }else{
                    $.each(response.messages, function(key, value) {
                        var element = $('#' + key);

                        element.closest('div.form-group')
                        .removeClass('has-error')
                        .addClass(value.length > 0 ? 'has-error' : 'has-success')
                        .find('.text-danger')
                        .remove();

                        element.after(value)

                    });
                }
            }

        });


    });


</script>

首先,我的if语句是:

            if (response.success == true){
                alert('success');
            }else{
               alert('failed');

                });

但是当我输入代码时:

  $.each(response.messages, function(key, value) {
                        var element = $('#' + key);

                    element.closest('div.form-group')
                    .removeClass('has-error')
                    .addClass(value.length > 0 ? 'has-error' : 'has-success')
                    .find('.text-danger')
                    .remove();

                    element.after(value)

如果验证失败,则该按钮不再起作用。

您正在实际需要变量$key的php循环中对字符串'key'进行硬编码

更改

$data['messages']['key']

$data['messages'][$key]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM