Видел подобные вопросы но там идет отправка Только файла, а не как у меня Файл + строковые данные формы. Собственно сам вопрос есть форма приводить ее полный код не буду так как там все работает. Сам код ajax который берет данные из формы и отправляет их в обработчик:
$(document).on("click", "#addbookbuton", function () {
var data = new FormData();
var cud;
cud = $(this).parent('form').children("select[name='idc']").val();
data.append('idc', cud);
cud = $(this).parent('form').children('div').children("select[name='ids']").val();
data.append('ids', cud);
cud = $(this).parent('form').children('div').children('div').children("input[type='text']").val();
data.append('name', cud);
cud = $(this).parent('form').children('div').children('div').children('label').children("input[name='image']").val();
data.append('image', cud);
cud = $(this).parent('form').children('div').children('div').children('label').children("input[name='file']").val();
data.append('file', cud);
cud = $(this).parent('form').children('div').children("textarea").val();
data.append('text', cud);
$.ajax({
url: 'hys/ajx/booksload.php',
dataType: 'text',
cache: false,
contentType: false,
processData: false,
data: data,
type: 'post',
success: function(php_script_response){
//alert(php_script_response);
}
});
});
проверяя вкладку "сеть" в консоли браузера вижу что все данные которые нужны уходят в обработчик booksload.php однако как раз данные файлов туда не поступают почему то. к примеру если в файле booksload.php добавить строку
echo $_POST['name'];
то в консоли в вкладке "сеть" при выборе запроса к обработчику в разделе "ответ" будет показано что данные выводятся, но если поместить проверку файла такого вида
if (!empty($_FILES['file']['name']) && sizeof($_FILES['file']['name']) != 0) {
echo "sdsd";
} else {
echo "nooo";
}
то выдает строку "nooo" - то есть файла по сути не получает, как правильно отправлять такие данные что бы все доходило до обработчика корректно?
Всё же, замените children("input[name='file']").val()
на children("input[name='file']").prop('files')[0]
.
val Вам даст только лишь путь к файлу на Вашем компьютере (что, кстати, для сервера не особо полезная инфа), а вот свойство элемента files - уже куда полезнее, в нём перечислены все файлы (судя по всему их может быть в объекте несколько, я только не знаю зачем, но не суть). Т.к. особо мудрствовать при данной постановке задачи не нужно, поэтому берём просто первый (у программистов он же - нулевой) элемент. Это именно что ни на есть офигенный объект с типом File.
P.S. Как именно устроен сам механизм передачи файла - я не знаю. Можете прочитать и рассказать мне (ну или хотя бы ссылку кинуть).
Работаю с wordpress и woocommerce недавноСайт по продаже золотых изделий
Можно ли с помощью phpdoc задокументировать массив так, чтобы при разработке, IDE подставляла информацию (ключ массива) из документации phpdoc?