Доброго времени суток! Есть у меня такая проблемка - собираюсь осуществить загрузку картинок на сайт без перезагрузки страницы через ajax. Есть такая форма:
и вот такая функция, которая должна отправлять аяксом файл из поля загрузки в обработчик вот так: function setimage() { var uploadfile = $("#uploadimage").val() $.ajax({ type: "POST", url: "uploadimages.php", data: "img=" + uploadfile, success: function(html){ $("#textar").append(html) } }) }
С этим проблем нет, в обработчике все работает, кроме одного - там есть функция ресайза, которая по отдельности тоже работает! Выглядит примерно так: //тут объявляется функция $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, а не как загрузить файлы под все браузеры. Всё просто, посмотрите (jsfiddle): function setimage() { var $input = $("#uploadimage") var fd = new FormData fd.append('img', $input.prop('files')[0]) $.ajax({ url: 'http://example.comcript.php', data: fd, processData: false, contentType: false, type: 'POST', success: function (data) { alert(data) } }) } Обновление Ох-хо, php тут совсем не причем, доллар вначале имени переменной означает, что скорей всего она содержит jQuery-коллекцию. Обновление А вы свой скрипт то изменили? А не то в примере у вас $_POST['img'], а должен быть $_FILES['img'] о чем я писал выше. Мне кажется рано вам ещё такими вещами заниматься, начните с основ php, научитесь загружать файол без ajax, а потом к работающему код попытайтесь его прикрутить.