Здравствуйте.
У меня есть форма, я собираю данные и хочу обработать их через ajax через GET, но есть переменная, которая ранее отправлялась через POST, поменял алгоритм, но не понимаю, почему через такой принцип не работает.
-----
Здесь привязываю id, чтобы получить данные из input и также загружаю файл:
<label class="contact-lable">Название</label>
<input name="name" id="my_name" class="form-control" type="text" />
<label for="exampleFormControlFile1">Загрузить файл</label>
<input type="file" name="path" class="form-control-file" id="file" accept=" .txt ">
Дальнейшие действия:
<script>
$(document).ready(function(){
$("#start_function" ).click(function(){
// start_function - это id кнопки при которой срабатывает код ниже
var my_name = $("#my_name").val();
// получаю данные из input
var files; // переменная будет содержать данные файлов
// заполняем переменную данными, при изменении значения поля file
$('input[type=file]').on('change', function(){
files = this.files;
});
$.ajax({
url: "include/ajax.php",
cache: false,
data: ({type:"upload", my_name:my_name,files:files}),
success: function(html){
$("#upload_ajax").html(html);
alert("ok");
}
});
return false;
});
});
</script>
Сам файл ajax, где принимаю данные и обрабатываю:
if($_GET['type'] == 'upload') {
$my_name = $_GET['my_name'];
$files = $_GET['files'];
$data = array();
$error = false;
$files = array();
// переместим файлы из временной директории в указанную
foreach( $_FILES as $file ){
$uniqdir = "keys";
$uniqfile = base_convert(uniqid().rand(0,2000000000), 10, 36);
$uploaddir = './'.$uniqdir; // . - текущая папка где находится submit.php
// Создадим папку если её нет
if( ! is_dir( $uploaddir ) ) mkdir( $uploaddir, 0777 );
$type = pathinfo($file['name'], PATHINFO_EXTENSION);
$file_name = $uniqfile .'.'. $type;
if( move_uploaded_file( $file['tmp_name'], "$uploaddir/$file_name" ) ){
$files[] = realpath( "$uploaddir/$file_name" );
}
else{
$error = true;
}
// Здесь я получаю в переменную имя файла, чтобы сохранить
$keys_file = $file_name;
}
$data = $error ? array('error' => 'Ошибка загрузки файлов.') : array('files' => $files );
echo json_encode( $data );
// Сохраняю в базу данных
$save = R::dispense('data');
$save->my_name = $my_name;
$save->keys_file = $keys_file;
R::store($save);
}
Данные из input с id = my_name успешно сохраняются в базе данных.
Алгоритм сохранения файла на сервере также верный - работает, но через POST.
Проблема в том, что переменную files раньше передавал через POST, а сейчас получаю через GET.
Почему данный метод работает для id = my_name, а для files отказывается работать или я где-то допустил ошибку?
Цель: соблюдая подобную структуру для удобства, сохранить данные от my_name и название файла в базу данных, так и загрузить этот файл на сервер.
Помогите разобрать проблему.
Данные из files в файл ajax передаются пустыми.
Спасибо.