Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

Передать через ajax данные формы file

Доброго времени суток! Есть у меня такая проблемка - собираюсь осуществить загрузку картинок на сайт без перезагрузки страницы через ajax. Есть такая форма:

и вот такая функция, которая должна отправлять аяксом файл из поля загрузки в обработчик вот так: С этим проблем нет, в обработчике все работает, кроме одного - там есть функция ресайза, которая по отдельности тоже работает! Выглядит примерно так: //тут объявляется функция
$img = $_POST['img'];//получаем данные
$image = imageResize($img, 'litimages', 1000, 1000);//делаем ресайз (пареметры - картнка, директория для сохраненияя, размеры)
$image = "



"; //вставляем в тег адрес echo $image; //и возвращаем Все логично, но на деле выдает ошибку: Catchable fatal error: Argument 1 passed to imageResize() must be an array, string given, called in Z:\home\superli\www\uploadimages.php on line 92 and defined in Z:\home\superli\www\uploadimages.php on line 5 Это, как по мне, связанно с тем, что вот тут var uploadfile = $("#uploadimage").val(); отправляется название картинки, а не сама картинка. Помогите, пожалуйста, разобраться, как правильней отправлять сам файл, заранее спасибо!


Ответ

Вопрос же про jQuery, а не как загрузить файлы под все браузеры. Всё просто, посмотрите: http://jsfiddle.net/fmygzk7t/ function setimage() { var $input = $("#uploadimage"); var fd = new FormData;
fd.append('img', $input.prop('files')[0]);
$.ajax({ url: 'http://example.com/script.php', data: fd, processData: false, contentType: false, type: 'POST', success: function (data) { alert(data); } }); } Обновление Ох-хо, php тут совсем не причем, доллар вначале имени переменной означает, что скорей всего она содержит jQuery-коллекцию. Обновление А вы свой скрипт то изменили? А не то в примере у вас $_POST['img'], а должен быть $_FILES['img'] о чем я писал выше. Мне кажется рано вам ещё такими вещами заниматься, начните с основ php, научитесь загружать файол без ajax, а потом к работающему код попытайтесь его прикрутить.

Комментариев нет:

Отправить комментарий