Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Динамическая загрузка файлов (https://javascript.ru/forum/jquery/53761-dinamicheskaya-zagruzka-fajjlov.html)

VolodinAS 17.02.2015 09:21

Динамическая загрузка файлов
 
Нашел плагин jquery динамической загрузки файлов.
Вот ссылка на его скачивание

Также, использую гугловский ajax.

Вот ИСХОДНЫЙ код страницы, где используется плагин загрузки.

Проблема в том, что вроде бы всё встраиваю верно. Сначала jquery, потом плагин. Затем функция:
$(document).ready(function() { 
	$('#avatar').live('change', function() { 
		$("#preAva").html(''); // чистим preview
		$("#preAva").html('<img src="images/load.gif" height="32" />');
		$("#formAvaUpload").ajaxForm({
			target: '#preAva'
		}).submit();
	});
});


Потом сама форма с div'ом для превью:
<div id="preAva">
<?php

if ($authArr['info']['avatar']){
echo <<<EOD
<img src="images/avatars/{$authArr['info']['avatar']}" height="100">
EOD;
} else {
echo "Аватар не установлен";
}

?>
</div>
<form id="formAvaUpload" method="post" enctype="multipart/form-data" action="php_avatar.php">
	<input type="file" name="avatar" id="avatar" />
</form>


Запускаю страницу. После загрузки выпадает ошибка о том, что изначально плагин не идентифицирован.
Код:

Uncaught TypeError: undefined is not a function
(anonymous function)
m.Callbacks.j [jquery.min.js:2]
m.Callbacks.k.fireWith [jquery.min.js:2]
m.extend.ready [jquery.min.js:2]
J  [jquery.min.js:2]

жалуясь на строку
$('#avatar').live('change', function() {


Файл выбирается нормально, в форме отображается выбранный файл, но картинка загрузки
$("#preAva").html('<img src="images/load.gif" height="32" />');

не отображается.

Смешно то, что у меня есть еще один сайт, где практически всё тоже самое. Подозреваю в этом ВОЗМОЖНО устаревшую версию jquery в google, но пока не пробовал. Может кто сталкивался с такой проблемой и знает, как ее решить?

VolodinAS 17.02.2015 09:25

Попробовал версии с офф jquery - результат тот же

danik.js 17.02.2015 14:38

live() устарел и был удален из jQuery. Используй on().

VolodinAS 17.02.2015 14:47

Цитата:

Сообщение от danik.js (Сообщение 356982)
live() устарел и был удален из jQuery. Используй on().

Хм... Странно, что на моем другом сайте всё работает.... Видимо, старый джейк там еще....................

просто заменить на on? или перелопатить всё?

VolodinAS 17.02.2015 14:53

вроде бы всё вышло и отправляет данные на указанный в форме файл, но я отправляю данные post'ом, но при print_r($_POST) выводит пустой массив, будто данные не отправил. Что посоветуете?

laimas 17.02.2015 14:55

Если при загрузке документа avatar присутствует, то да, просто заменить на метод .on, иначе нет, необходимо будет делегировать обработку.

VolodinAS 17.02.2015 14:59

Уже попробовал. запрос на php_avatar.php приходит. Но при print_r($_POST) - пустой массив. Будто данных нет.
Вот requestHeaders..
Цитата:

Remote Address:127.0.0.1:80
Request URL:http://multytasker.ru/php_avatar.php
Request Method:POST
Status Code:200 OK
Request Headersview parsed
POST /php_avatar.php HTTP/1.1
Host: multytasker.ru
Connection: keep-alive
Content-Length: 605643
Accept: */*
Origin: http://multytasker.ru
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryaRv51PgqzxLJWqCg
Referer: http://multytasker.ru/profile
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: PHPSESSID=f67c8fdca90273a793d78b8943abed8f; USER_ID=1; USER_PASSWORD=14851e5b7982e744a5efa9ee7c45bb7a6af1 8fe49c598dfa64d8304cee2484c0cb213f36c0866400407748 8225789729
Request Payload
------WebKitFormBoundaryaRv51PgqzxLJWqCg
Content-Disposition: form-data; name="avatar"; filename="РАСПИСАНИЕ.jpg"
Content-Type: image/jpeg


------WebKitFormBoundaryaRv51PgqzxLJWqCg--
Response Headersview parsed
HTTP/1.1 200 OK
Date: Tue, 17 Feb 2015 11:58:24 GMT
Server: Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/0.9.8r PHP/5.2.12
X-Powered-By: PHP/5.2.12
Content-Length: 91
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
И если честно - я тут не вижу признаков картинки... Точнее, content: image вижу и название, но загрузки будто вообще не происходит и даже не пытается

VolodinAS 17.02.2015 15:05

Я идиот... всё из головы вылетело... $_FILES же надо проверять! Всё, всем большое спасибо! +ы в карму... или я не могу, потому что у меня минус?...

laimas 17.02.2015 15:06

А вы не заголовки смотрите, а параметры запроса.


Часовой пояс GMT +3, время: 04:49.