[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ajax jquery загрузка файла
Slays
скажите как через ajax jquery передать серверу файл.

Простые текстовые поля забрать легко:
var name = $("input#name").attr("value");

и передаем, а на сервере обращаемся как к простому post/get элементу
$name = $_POST['name'];


а как файл передается ? Чтоб на сервере проверить $_FILE и привычно с ним же работать ?

Только без плагинов различных uploads



Спустя 11 минут, 28 секунд (12.08.2010 - 20:56) ZSH написал(а):
наверное никак.
я загружаю через скрытый iframe да и плагины тоже создают iframe и работают с ним, или через flash.

Спустя 6 минут, 17 секунд (12.08.2010 - 21:03) Joker написал(а):
юзай плагин jQuery.form или jQuery.ajaxForm непомню точно как называеться

Спустя 10 минут, 45 секунд (12.08.2010 - 21:13) Slays написал(а):
ZSH опиши схему поподробней =)

Joker сейчас, гляну =)

Спустя 1 минута, 59 секунд (12.08.2010 - 21:15) ZSH написал(а):
<form style="display: inline;" action="upload_photo.php" method="post" enctype="multipart/form-data" target="upload_photo" name="upload_img">
<input
name="filename" type="file">
<input
name="foto" type="submit" value="Закачать">
</form>
<iframe
id="upload_photo" name="upload_photo" style="width: 0; height: 0; border: 0px;" frameborder="0"></iframe>


при нажатии "отправить" страница не перегружается, ответ от сервера приходит в скрытый фрейм, а в файле upload_photo.php проверка файла, сохранение и тд.

php может вернуть JS код который по результату выполнит определенные действия.

обрати внимание на название атрибутов FORM и IFRAME

Спустя 4 минуты, 27 секунд (12.08.2010 - 21:20) Slays написал(а):
вроде понял, пойду поэксперементирую =)

Спустя 1 день, 23 часа, 2 минуты, 43 секунды (14.08.2010 - 20:22) Slays написал(а):
с ифреймом способ взял на заметку, только ZSH, интересно узнать твое осуществление этого:

php может вернуть JS код который по результату выполнит определенные действия.


просто в ифрейм вставляешь ?
echo "<script type='text/javascript'>код</script>";

user posted image

если вставить
echo "<script type='text/javascript'>alert('сообщение')</script>";

то все работает, а если свою функцию
echo "<script type='text/javascript'>answer('сообщение')</script>";

то не получается к ней обратится с главной странице, это понятно почему, но как это исправить ? Чтобы функцию можно было указать на главной странице, а в ифрейме вызвать.

Спустя 14 часов, 19 минут, 10 секунд (15.08.2010 - 10:42) linker написал(а):
Я работаю с iframe. Суть такова, когда нажимается кнопка отправить, выполняется функция, которая создает скрытый элемент iframe, а у формы меняется target на этот iframe.

Спустя 40 минут, 46 секунд (15.08.2010 - 11:22) Slays написал(а):
linker напиши подробней, если не сложно, желательно со вставками кода =)
ато запутался я что-то
user posted image

Мне нужно:
- отправляем файл
- файл обрабатывается, загружается на сервер
- если все ок выполнить javascript функцию (закрыть окно, вставить добавленный файл/картинку на страницу через ajax и тд, вобщем любую функцию по выполнению загрузки файла, в зависимости от результата этой загрузки)

структура:
- index.php (главная страница)
в ней имеем форму загрузки, невидимый ифрейм и JS функцию ждущую вызова из iframe
- upload.php (обработчик)
открывается в iframe, обрабатывает данные и вызывает функцию

не состыковка: на главной написана функция, которая вызывается в iframe - не работает

Спустя 1 день, 1 час, 39 секунд (16.08.2010 - 12:23) ZSH написал(а):
echo "<script type='text/javascript'>parent.answer('сообщение')</script>

функция answer должна находится в коде основной страницы

Спустя 7 минут, 5 секунд (16.08.2010 - 12:30) linker написал(а):
В общих чертах так
function CreateIFrame() 
{
var FrameId = 'f' + Math.floor(Math.random() * 99999);
var IFrameElement = document.createElement('iframe');
IFrameElement.id = FrameId;
IFrameElement.name = FrameId;
IFrameElement.style = 'display:none';
IFrameElement.src = 'about:blank';
document.body.appendChild(IFrameElement);
return IFrameElement;
}

function SendForm(FormId)
{
var Form = document.getElementById(FormId);
var IFrame = CreateIFrame();
Form.setAttribute('target', IFrame.id);
Form.submit();
}

Спустя 4 часа, 38 минут, 22 секунды (16.08.2010 - 17:09) ZSH написал(а):
ну че получилось?

Спустя 21 час, 37 минут, 48 секунд (17.08.2010 - 14:46) Slays написал(а):
аха, спасибо за помощь )


_____________
если помог, не скупись на карму =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.