Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.06.2015, 12:02
Интересующийся
Отправить личное сообщение для dalexra51 Посмотреть профиль Найти все сообщения от dalexra51
 
Регистрация: 10.12.2014
Сообщений: 27

Загрузка изображения AJAX
Всем привет!
Никак не могу понять, как мне сделать загрузку изображения на сервак через AJAX.

То есть, простоя форма с одним полем типа FILE ну и кнопка submit на которой preventDefault.

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

Спасибо!

<form name="photo" id="imageUploadForm" enctype="multipart/form-data" action="http://upload/ajaxImageUpload.php" method="post">
			<input type="file" style="" id="ImageBrowse" name="image" />
			<input type="submit" name="upload" value="Upload" id="upload" />			
		</form>

		<script type="text/javascript">		
			jQuery('#upload').on( 'click', function(event){
				event.preventDefault();				
				var formData = new FormData("#imageUploadForm");
				jQuery.ajax({
					type:'POST',
					url: 'http://upload/ajaxImageUpload.php',
					data:formData,
					cache:false,
					contentType: false,
					processData: false,
					success:function(data){
						console.log("success");
						console.log(data);
					},
					error: function(data){
						console.log("error");
						console.log(data);
					}
				});				
				alert(data);	
			});		
		</script>


вот эта штуковина в результате пишет что data is not defined...

На серваке скрипт пока ничего не делает просто пишет echo "Hello", хочу для начала просто связь установить, а потом можно будет начать обрабатывать $_POST and $_FILES

П.С.
когда непосредственно в запрос поставил адрес обработчика то получил ответ но вот теперь не понимаю почему не передаются данные... массив $_POST and $_FILES пустые

Последний раз редактировалось dalexra51, 03.06.2015 в 13:03.
Ответить с цитированием
  #2 (permalink)  
Старый 03.06.2015, 13:12
Аватар для KosBeg
Профессор
Отправить личное сообщение для KosBeg Посмотреть профиль Найти все сообщения от KosBeg
 
Регистрация: 22.05.2015
Сообщений: 384

<script src='jquery-2.1.4.js'></script>

<form name="photo" id="imageUploadForm" enctype="multipart/form-data" action="http://upload/ajaxImageUpload.php" method="post">
			<input type="file" style="" id="ImageBrowse" name="image" />
			<input type="submit" name="upload" value="Upload" id="upload" />			
		</form>

		<script>		
			jQuery('#upload').on( 'click', function(event){
				event.preventDefault();				
// var formData = new FormData("#imageUploadForm"); - нужно new FormData(imageUploadForm)
				jQuery.ajax({
					type:'POST',
					url: jQuery("#imageUploadForm").attr('action'),
					data:formData,
					cache:false,
					contentType: false,
					processData: false,
					success:function(data){
						console.log("success");
						console.log(data);
					},
					error: function(data){
						console.log("error");
						console.log(data);
					}
				});				
// alert(data); - "ReferenceError: data is not defined" потому что здесь "data" вызывать нельзя можно вызывать например в "error: function(data){}" или "success:function(data){}"
			});		
		</script>

Последний раз редактировалось KosBeg, 03.06.2015 в 14:24.
Ответить с цитированием
  #3 (permalink)  
Старый 03.06.2015, 13:15
Интересующийся
Отправить личное сообщение для dalexra51 Посмотреть профиль Найти все сообщения от dalexra51
 
Регистрация: 10.12.2014
Сообщений: 27

for(var item in formData) {
		console.log(item);
	}


Выводит просто append....
Ответить с цитированием
  #4 (permalink)  
Старый 03.06.2015, 13:25
Интересующийся
Отправить личное сообщение для dalexra51 Посмотреть профиль Найти все сообщения от dalexra51
 
Регистрация: 10.12.2014
Сообщений: 27

c data разобрался.. спасибо. проьлема с formdata
Ответить с цитированием
  #5 (permalink)  
Старый 03.06.2015, 14:23
Аватар для KosBeg
Профессор
Отправить личное сообщение для KosBeg Посмотреть профиль Найти все сообщения от KosBeg
 
Регистрация: 22.05.2015
Сообщений: 384

извиняюсь за ошибку в выделении кода... не исправил сразу, ибо мне нужно было отойти...
а теперь о FormData: вы используюте "JQuery-подобный" селектор "#imageUploadForm"
а нужно указывать просто айди формы imageUploadForm, причем БЕЗ КАВЫЧЕК!
поэтому правильно не
var formData = new FormData("#imageUploadForm");

а правильно
var formData = new FormData(imageUploadForm);

Последний раз редактировалось KosBeg, 03.06.2015 в 14:28.
Ответить с цитированием
  #6 (permalink)  
Старый 03.06.2015, 14:34
Аватар для KosBeg
Профессор
Отправить личное сообщение для KosBeg Посмотреть профиль Найти все сообщения от KosBeg
 
Регистрация: 22.05.2015
Сообщений: 384

https://developer.mozilla.org/ru/doc...mData/FormData - вот Вам почитать о FormData
Ответить с цитированием
  #7 (permalink)  
Старый 05.06.2015, 16:06
Аватар для apolon13
Интересующийся
Отправить личное сообщение для apolon13 Посмотреть профиль Найти все сообщения от apolon13
 
Регистрация: 24.04.2015
Сообщений: 28

Попробуйте так
<form id="ajaxform" enctype="multipart/form-data">
      <input class="form-field"  type="file" name='filename' /><br />
      <input class="submit-button" type="submit" value="загрузить" />
 </form>


$("#ajaxform").submit(function(e){ 
var fd = new FormData();
fd.append('image', $('input[type=file]')[0].files[0]);
$.ajax({ 
type: 'POST', 
url: 'gogogo.php', 
data: fd,
processData: false,
contentType: false,
});
Ответить с цитированием
  #8 (permalink)  
Старый 05.06.2015, 17:15
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Сообщение от KosBeg Посмотреть сообщение
извиняюсь за ошибку в выделении кода... не исправил сразу, ибо мне нужно было отойти...
а теперь о FormData: вы используюте "JQuery-подобный" селектор "#imageUploadForm"
а нужно указывать просто айди формы imageUploadForm, причем БЕЗ КАВЫЧЕК!
поэтому правильно не
var formData = new FormData("#imageUploadForm");

а правильно
var formData = new FormData(imageUploadForm);
var fd = new FormData( $('#ajaxform') );

Вот так работает.
Ответить с цитированием
  #9 (permalink)  
Старый 06.06.2015, 13:27
Аватар для KosBeg
Профессор
Отправить личное сообщение для KosBeg Посмотреть профиль Найти все сообщения от KosBeg
 
Регистрация: 22.05.2015
Сообщений: 384

Сообщение от Decode
Вот так работает.
мой вариант тоже работает)))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax асинхронная загрузка изображения lbvjy114 jQuery 7 18.08.2014 12:17
Загрузка изображений через AJAX Bezlepkin Элементы интерфейса 12 24.10.2013 01:31
AJAX + PHP загрузка файлов с сервера Stanisov AJAX и COMET 10 16.08.2013 11:18
Загрузка страниц с помощью ajax radikal AJAX и COMET 3 29.11.2012 16:26
AJAX загрузка изображения. GiSEG jQuery 4 18.11.2011 20:10