如何通过CodeIgniter中的Ajax获取Fileupload的表单验证错误

时间:2018-02-21 05:37:01

标签: php jquery html ajax codeigniter

您好我正在尝试在CodeIgniter中获取输入类型文件的form_error。我在Javascript中编写了一个代码,该代码使用Ajax传递详细信息,如下所示

var name = $("#name").val();
var des = $("#des").val();
var img=$("#file").prop('files')[0];
var fd=new FormData();
fd.append('photo',img);
fd.append('name',name);
fd.append('description',des);
$.ajax({
    type: "POST",
    url: "<?php echo base_url();?>personadd",
    data: fd,
    contentType: false,
    cache: false,
    processData: false,
    success:function(data)
    {
        console.log(data);
    }
});

在我的控制器内部,我的代码如下:

$this->form_validation->set_rules('name','Person Name','trim|required',array('required'=>'Please Enter %s'));
$this->form_validation->set_rules('description','Description','trim|required',array('required'=>'Please Enter %s'));
if(!isset($_FILES['photo']['name'])) {
    $this->form_validation->set_rules('photo','Image','required',array('required'=>'Please select an %s'));
}
if($this->form_validation->run()==FALSE) {
    echo json_encode(['name'=>form_error('name'),'description'=>form_error('description'),'file'=>form_error('photo')]);
}

执行此操作时,我没有收到file的文件。请帮我解决此问题

2 个答案:

答案 0 :(得分:0)

尝试以下方法

if(validation_errors())
{
    echo json_encode = validation_errors();
} 

答案 1 :(得分:0)

我刚刚修改了控制器并解决了问题

if($_FILES['photo']['error']!=0)
{
    $this->form_validation->set_rules('photo','Photo','callback_filecheck');

}
if($this->form_validation->run()==FALSE)
{
    echo json_encode(['name'=>form_error('name'),'description'=>form_error('description'),'photo'=>form_error('photo')]);
}

并且回调函数是

public function filecheck()
{
     $this->form_validation->set_message('filecheck', 'Please select {field}');
     return false;
}