Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Возможно ли реализовать загрузку картинок на Jquery ajax?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Rooner
Отправлено: 29 Ноября, 2012 - 14:50:40
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




На данный момент использую jquery.form.js, с его помощью загружаются картинки, но можно обойтись без него, используя только $.ajax? Если да, то как отправить файл скрипту обработчику? В случае jquery.form.js он видимо эмулирует нажатие по кнопке формы.
Вот так я представляю себе как поидее можно грузить картинки. Пример(не работает)
поле для загрузки файла
CODE (html):
скопировать код в буфер обмена
  1. <input type="file" name="kart" id="kart" />

CODE (javascript):
скопировать код в буфер обмена
  1.   $("#kart").change(function(){
  2.     $.ajax({
  3.       type: "POST",
  4.       url: "../../modules/image_load/test.php",
  5.       data: { file:$(this).val() }, // вот тут бы передать файл
  6.       error: function() { alert('error'); },
  7.       success: function(msg) {
  8.         alert(msg);
  9.       },
  10.       complete: function() { alert('complete'); }
  11.     });
  12.   });
 
 Top
armancho7777777 Супермодератор
Отправлено: 29 Ноября, 2012 - 14:58:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Rooner пишет:
но можно обойтись без него, используя только $.ajax?

Нет.
 
 Top
Rooner
Отправлено: 29 Ноября, 2012 - 15:11:03
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




armancho7777777, Огорчение
Тогда другой вопрос, как заставить работать форму, использующую jquery.form.js в другой форме? Т.е. имеем форму в форме
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form>
  3.   <form id="imageform" method="post" enctype="multipart/form-data" action="../../modules/image_load/load.php">
  4.   </form>
  5. </form>
  6.  

И имеем обработчик для внутренней формы
CODE (javascript):
скопировать код в буфер обмена
  1.     $("#imageform").ajaxForm({  
  2.       target: '#preview'
  3.     }).submit();

В итоге внутренняя форма не работает
 
 Top
armancho7777777 Супермодератор
Отправлено: 29 Ноября, 2012 - 15:11:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Rooner пишет:
имеем форму в форме

Зачем так извращаться?
Может объясните, в чём изначальная суть задачи? На словах.
А не то, как Вы пытаетесь это реализовать.
 
 Top
esterio
Отправлено: 29 Ноября, 2012 - 15:24:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Если я правильно понял, то нельзя получить к данным файла из поля file, только к названии файла(политика безопасности). Но надсилать файл через AJAX можно, в сети полно примеров. Самый простой - ето скрытий iframe и форма с атрибутом target на етот самый фрейм.
 
 Top
Rooner
Отправлено: 29 Ноября, 2012 - 15:26:15
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




armancho7777777, хорошо. Хочу общую форму с полями: название, описание, цена и прочие, внутри которой также будет поле файл, для загрузки картинок. Сейчас проблема в том, что поле файл это вообще отдельная форма использующая jquery.form.js со своим обработчиком. А у общей формы разумеется свой обработчик. Получается форма в форме, которая не работает.
 
 Top
caballero
Отправлено: 29 Ноября, 2012 - 15:28:34
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




а положить все в одну форму религия запрещает?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Rooner
Отправлено: 29 Ноября, 2012 - 15:29:10
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




esterio, iframe, хм, надо попробовать
(Добавление)
caballero, общая форма не одна, их много и они разные, и обработчики разные, а вот поле для загрузки картинок одно, даже не поле, а модуль с обработчиком
 
 Top
armancho7777777 Супермодератор
Отправлено: 29 Ноября, 2012 - 15:37:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




esterio пишет:
Но надсилать файл через AJAX можно

Нельзя.
esterio пишет:
в сети полно примеров. Самый простой - ето скрытий iframe

Ни какой связи с технологией ajax.
Все примеры реализаций отправки файлов осуществляются или через скрытый iframe, или flash.

Rooner пишет:
их много и они разные

Ладно, ну а причина в чём пихать одну форму в другую?
Почему не "положить" туда только поле для загрузки изображения и назначить общий обработчик ?
Что за извращения?
Сколько программирую, не разу не потребовалось "пихать" несколько форм в одну страницу.
 
 Top
Rooner
Отправлено: 29 Ноября, 2012 - 16:05:56
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




armancho7777777, я и не хотел пихать форму в форму, ситуация заставила Улыбка
Я хочу сделать вот такую форму


Я не понял как можно сделать общий обработчик? если общая форма на php, а поле файл на jquery.form.js, тобишь на ajax'e. Причем мне же не нужно отправлять данные с общей формы, надо только с поля файл.

Также, посмотрел я iframe, и он вроде как тоже без формы ничего не может

Может просто как-то визуально переместить этот блок с картинками? Радость

(Отредактировано автором: 29 Ноября, 2012 - 16:15:13)

 
 Top
armancho7777777 Супермодератор
Отправлено: 29 Ноября, 2012 - 16:31:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Если я правильно понимаю, Вы хотите без перезагрузки страницы загрузить картинку
и чтобы она сразу-же отобразилась в блоке, выделенном красной границей ?
 
 Top
Rooner
Отправлено: 29 Ноября, 2012 - 16:40:34
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




armancho7777777, да, сейчас это реализовано с помощью jquery.form.js, но как я писал раньше, внутри формы - не работает
 
 Top
armancho7777777 Супермодератор
Отправлено: 29 Ноября, 2012 - 16:43:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




А почему оно должно быть внутри той формы ?
 
 Top
armancho7777777 Супермодератор
Отправлено: 29 Ноября, 2012 - 16:51:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Короче вот, нашёл из своих тренировочных плагинов с примером.
Распакуйте архив на сервер в какую-нибудь папку, запустите index.php, разбирайтесь.
Пример использования:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(function(){
  3.  
  4.         $('#my-file').load_file('send.php', function(data){
  5.        
  6.                   $('#deBag').html(
  7.                  
  8.                           '<p>'+
  9.                                 '<b>name</b>: '      +  data['name']      + '<br>'+
  10.                                 '<b>type</b>: '      +  data['type']      + '<br>'+
  11.                                 '<b>tmp_name</b>: '  +  data['tmp_name']  + '<br>'+
  12.                                 '<b>error</b>: '     +  data['error']     + '<br>'+
  13.                                 '<b>size</b>: '      +  data['size']      +
  14.                           '</p>'
  15.                          
  16.                   );   
  17.                
  18.         });
  19.  
  20. });
  21.  

CODE (html):
скопировать код в буфер обмена
  1. <input type="file" id="my-file" name="my_file">
  2. <div id="deBag"></div>


Файл send.php
PHP:
скопировать код в буфер обмена
  1.  
  2. include 'load_file_lib/load_response.php';
  3.  
  4. load_response($_FILES['my_file']);
  5.  
  6. // Или просто html (тогда соответственно файл load_response.php можно не подключать)
  7. // echo '<p>Всё OK!</p>';
  8.  

Скачать файл: load_file_iframe.7z
Скачан раз: 81
 
 Top
Rooner
Отправлено: 29 Ноября, 2012 - 16:53:38
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




armancho7777777, потому что так попросили, так красивее, так по фэн шую Улыбка
Вроде как нашел решение, такое решение, которое форму вообще не использует http://n-professor[dot]ru/zagruzka-f[dot][dot][dot]l/comment-page-2
Это решение использует ajax_upload, автор http://valums.com, но вот не задача - все официальные примеры просто не работают Огорчение
А не официальные примеры кривые, косые и их мало
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB