I am using CodeIgniter. I am trying to upload the image using AJAX after jquery validation but it's not working. Jquery validation is working in case field is empty. After filling all the fields and clicked on submit button then my page refreshed. It's not calling the controller.
Would you help me out?
$("#primary").validate({
errorElement: 'div',
rules: {
first_name: {
required: true,
alphabets: true,
minlength: 3
},
last_name: {
alphabets: true
},
profile_pic: {
extension: "png|jpeg|jpg|gif"
},
},
messages: {
profile_pic: {
extension: "Only PNG , JPEG , JPG, GIF File Allowed",
},
},
submitHandler: function(form)
{
var formData = new FormData(this);
$.ajax({
url: baseUrl + "/AddMember/addMembers",
type: 'POST',
//data: $('#primary').serialize(),
data:formData,
dataType: 'json',
success: function(data)
{
if (data.error == "true")
{
//success message
}
else {
//error message
}
}
});
}
});
Controller code
$config=['upload_path' =>'./uploads/images',
'allowed_types' =>'gif|jpg|png|jpeg',
'file_name' =>uniqid().time().date("dmy")
];
if ($this->upload->do_upload('profile_pic'))
{
$profile_pic_set = $this->upload->data('file_name');
}
else{$profile_pic_set = "";//set empty value if user not uploading any image
}
$this->load->library('upload', $config);
$data = array(
'first_name' => trim($this->input->post('first_name')),
'last_name' => trim($this->input->post('last_name')),
'profile_pic' => $profile_pic_set
);
print_r($data); //here I am getting profile_pic empty.
html
<?php echo form_open_multipart('','id="primary"'); ?>
<input type="text" name="first_name" id="first_name" class="form-control" placeholder="First Name">
<input type="text" name="last_name" id="last_name" class="form-control" placeholder="Last Name">
<input type="file" name="profile_pic" id="file_upload">
<button type="submit" class="btn btn-primary btn_new">Submit</button>
<?php echo form_close(); ?>