Как загрузить файлы с помощью AJAX в CodeIgniter 3.0?

У меня есть форма с текстовыми полями и загрузка файла. Когда пользователь нажимает кнопку. значения текстового поля а также имя загрузки файла сохраняется в базу данных, а файлы загружаются на сервер. У меня нет опыта делать это с помощью AJAX. Таким образом, любая помощь очень ценится.

Это моя форма:

<form enctype="multipart/form-data" accept-charset="utf-8" name="f_complaint" id="f_complaint">
<input type="text" name="i_complaint" id="id_complaint" class="cl_complaint" />
<input type="file" name="i_file" id="id_file" class="cl_file" />
<input type="button" id="btn_upl" value="Save your complaint" class="btn btn-primary" />
</form>

Это мой AJAX:

<script src="<?php echo base_url('assets/inspinia/js/jquery-2.1.1.js'); ?>"></script>
<script src="<?php echo base_url('assets/jquery-ui/jquery-ui.js'); ?>"></script>
<script type="text/javascript">
$(document).ready(function() {
var url  = "<?php print base_url(); ?>complaint/saveadd";
$('#btn_upl').on('click', function() {
var formData = new FormData($(this).parent('form')[0]);
//alert(url);

$.ajax({
url  : url,
type     : 'POST',
data     : formData,
success : function (returndata) {
alert(returndata);
}
});
});
});
</script>

Это мой контроллер:

public function saveadd() {
$config['upload_path']      = FCPATH."assets/uploads/";
$config['max_size']         = '307200';
$config['file_name']            = "FILE - ".$_FILES['i_file']['name'];;
$config['overwrite']        = TRUE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if ( ! $this->upload->do_upload('i_file')) {
//return false;
redirect('app/');
} else {
redirect('complaint/add');
}
}

Что не так в коде? Даже оповещение не срабатывает. Я не хочу использовать плагины

0

Решение

Я предлагаю вам использовать эту библиотеку: https://blueimp.github.io/jQuery-File-Upload/basic.html

А в вики-библиотеке есть инструкция для codeigniter: https://github.com/blueimp/jQuery-File-Upload/wiki
CTRL + F -> Codeigniter

Я всегда использую его, и он работает очень хорошо 🙂

0

Другие решения

Что не так в коде? Даже оповещение не срабатывает.

Вот что не так.
1. Ваше оповещение вызывается при успешном выполнении AJAX. Это означает, что после успешного завершения вызова Ajax. Но в вашем контроллере CI вы перенаправляете вызов ajax, следовательно, ваш вызов AJAX никогда не завершается и никогда не возвращается в блок «success function (returndata):».

Теперь, чтобы решить эту проблему, просто замените приведенный ниже код.

  //return false;
redirect('app/'); replace with,
echo "upload failed";exit;

А ТАКЖЕ

 redirect('complaint/add'); replace with
echo "upload finished";exit;

Эти возвращаемые значения будут возвращены в переменной js «returndata».

0

Вот ссылка для загрузки файла с использованием ajax и codeigniter. Я считаю, что это лучший способ загрузить файл, используя ajax.

https://code.tutsplus.com/tutorials/how-to-upload-files-with-codeigniter-and-ajax--net-21684
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector