Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对AJAX请求使用form_验证库规则_Ajax_Codeigniter - Fatal编程技术网

如何对AJAX请求使用form_验证库规则

如何对AJAX请求使用form_验证库规则,ajax,codeigniter,Ajax,Codeigniter,我的一个表单使用AJAX发送数据。由于AJAX的存在,我的页面从不重新加载,有没有一种方法我仍然可以使用form\u validation来验证和输出哪些字段是错误的?我的表单使用jquery发送到的url是contact/ajax\u send 整个AJAX工作正常,只是我还没有插入任何验证。因为您使用AJAX发送数据,所以您可以做的是,只需在插入数据库之前添加表单验证代码调用 如果存在任何验证错误,您可以将错误消息作为json响应返回前端以显示错误消息。表单验证库将所有发生的错误分配给名为\

我的一个表单使用AJAX发送数据。由于AJAX的存在,我的页面从不重新加载,有没有一种方法我仍然可以使用
form\u validation
来验证和输出哪些字段是错误的?我的表单使用jquery发送到的url是
contact/ajax\u send


整个AJAX工作正常,只是我还没有插入任何验证。

因为您使用AJAX发送数据,所以您可以做的是,只需在插入数据库之前添加表单验证代码调用


如果存在任何验证错误,您可以将错误消息作为json响应返回前端以显示错误消息。

表单验证库将所有发生的错误分配给名为
\u error\u array
的私有数组,但不公开该数组或提供有关该数组的文档(注意第一条下划线?). 只需返回控制器中错误的json编码对象:

echo json\u encode($this->form\u validation->\u error\u array)


如果您愿意,您可以扩展CodeIgniter的表单验证库,可能会返回
FALSE
,而不是一个空数组。。。或任何你认为合适的:

/* libraries/MY_Form_validation.php */
<?php
class MY_Form_validation extends CI_Form_validation
{   
     function __construct($config = array())
     {
          parent::__construct($config);
     }

    function error_array()
    {
        if (count($this->_error_array) === 0) return FALSE;
        else return $this->_error_array;
    }
}
/*libraries/MY\u Form\u validation.php*/

我找到了一种方法,部分要感谢乔丹的回答。这将返回一个数组,其中包含有错误的字段的名称

// library/MY_Form_validation.php
class MY_Form_validation extends CI_Form_validation {

    public function get_field_data(){
        return count($this->_field_data) ? $this->_field_data : FALSE;
    }

}

// Controller file
$field_data = $this->form_validation->get_field_data();
foreach($field_data as $key=>$val){
    if($key == '__proto__') break;
    foreach($val as $k=>$v){
        if($k == 'error' && !empty($v)) $errors[] = $key;
    }
}
$return = array('success'=>FALSE, 'errors'=>$errors);

上述代码检查
错误
键是否为空。空值表示它通过了CI验证,而当您使用
validation\u errors()
时,没有空值会包含您看到的字符串。因为我在寻找那些有错误的字段,所以我只需要看看哪些值不是空的,而不管哪些值是空的。

看看这是否有帮助-这不是100%你想要的-但可能会给你指出正确的方向:这是一个非常有趣的线索。让我们看看。。。