Доброго времени суток! Есть у меня такая проблемка - собираюсь осуществить загрузку картинок на сайт без перезагрузки страницы через 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, а потом к работающему код попытайтесь его прикрутить.
Комментариев нет:
Отправить комментарий