LINUX.ORG.RU

[php][ajax] загрузка файла, без перезагрузки страницы

 ,


0

1

Интересует объяснение как это сделано _БЕЗ_ всяких jquery и всякой такой лабуды.

<form method=«POST» target=«answer» action=«» enctype=«multipart/form-data»> <input name=«fupload» type=«file»>

<input name=«submit» type=«submit» value=«Отправить» onclick=«sendrequest();»>

</form> Вот я сделал клик на кнопке, отработала sendrequest(); и вот там всё и сделалось.

★★★★★

Последнее исправление: sniper21 (всего исправлений: 1)

Невидимый iframe. Туда и посылай свой запрос. Далее тривиальным жабаскриптом производится всякая лабуда с parent.

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

>Далее тривиальным жабаскриптом производится всякая лабуда с parent.

Это чтобы вывести его из iframe на страницу? Как?

sniper21 ★★★★★
() автор топика
Ответ на: комментарий от sniper21

http://radio.momoiro.ru/
См. div id=«upload_form»

Скрипт на стороне сервера в ответ выдает хтмлку со скриптом а-ля:

<script>
parent.document.getElementById('message').innerHTML = 'upload completed';
</script>

iSage ★★★★
()
js:
...
function complete(){
  ch_status("Загружаю файл...");
  document.file__.submit();
  document.file__.reset();
} 
...

html:
...
<form target="dummyframe" enctype="multipart/form-data" method="post" action="cgi-bin/gf" name="file__">
<b>Загрузить файл</b>
<input id="filename" type="file" onchange="complete();" size="40" name="/Inc">
</form>
<iframe height="100" frameborder="0" width="50%" name="dummyframe">
</iframe>
...

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от KRoN73

Оно и без излишеств вроде jQuery отлично реализовывается. И можно сделать загрузку уймы файлов (правда, по одному элементу на файл): как только вы выбрали очередной файл, появляется форма для выбора следующего файла.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от random_user_123816235182

Оно не может работать, т.к. требует установки мегадырявого плагина. Который нафиг не нужен.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

>Во всех трех основных браузерах будет работать (Firefox, Chrome и Opera).

Выглядывайте в реальный мир иногда.

anonymous
()
Ответ на: комментарий от anonymous

Я и выглядываю. На первом месте у нас огнелис, на втором - хром, на третьем - опера. Ну а дальше уже всякие производные идут.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

>На первом месте у нас огнелис, на втором - хром, на третьем - опера.

Ну так то у вас:) А у нас есть ещё один, очень популярный браузер. И никто от него отказываться не хочет, как ни старайся.

А без его поддержки нельзя, денег не дадут, а кушать уж очень хочется.

anonymous
()
Ответ на: комментарий от anonymous

А у нас есть ещё один, очень популярный браузер

Если вы про IE, то это не браузер.

А без его поддержки нельзя, денег не дадут, а кушать уж очень хочется.

А я не парюсь, а просто пишу: «в вашем говеном недобраузере ничего работать не будет, поставьте что-нибудь приличное». :)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

> Я не про статистику, а про поддерживаемые стандарты.

Посетителю это расскажи, у которого все сайты как сайты, а твой - гениален.

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

Так можно проще писать: «у вас очень старый браузер, обновите до IE 11». И пусть себе 11 или 12-й IE ставит =)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

> Так можно проще писать: «у вас очень старый браузер, обновите до IE 11». И пусть себе 11 или 12-й IE ставит =)

Да, только на сегодняшний день у этого браузера в зависимостях - машина времени.

p.s. я если увижу надпись «обновите файрфокс до 4-й версии» сразу же лютобешенно свалю с этого сайта и никогда не вернусь.

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

я если увижу надпись «обновите файрфокс до 4-й версии» сразу же лютобешенно свалю с этого сайта и никогда не вернусь

Даже если там будет какой-нибудь хитрый интерфейс с кучей SVG и webGL?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

> Даже если там будет какой-нибудь хитрый интерфейс с кучей SVG и webGL?

А он нужен? Я сайты посещаю для того, чтобы получить определённую информацию, а не для того, чтобы сказать «Вау, чо вебмастер умеет!».

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

А я, вообще-то, говорю не про обычные статические html-ки. Они-то, ясен пень, и в lynx'е будут отображаться...

А вот если у вас задача - визуализация каких-то данных. Тогда, естественно, «голым» html'ем не обойтись. Как минимум придется SVG и еще кое-какие «плюшки» html5 подключать. А то и webGL.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

> А вот если у вас задача - визуализация каких-то данных. Тогда, естественно, «голым» html'ем не обойтись.

Зачем это нужно? Вот смотрите, есть целевой посетитель, он пришел на сайт за какой-то информацией, например о товаре, или за какой-то документацией. Посмотреть на «вау-визуализацию» приходят те, кому нечем заняться, и конверсии в материальные блага с них никакой.

Не надо страдать ерундой, лучше сделать нормальный сайт, не выдирающий с корнем глаза и вложиться в контент, чем пилить прыгающее габрище. И чтобы работал во всех браузерах, даже в IE6, а если останется время и желание - хоть видеопроигрыватель на жабаскрипт-движке туда вставьте как дополнительный плюс тем, у кого браузер поновей, а не с полуфашистским: «ах вы не хотите смотреть на мои свистелки-перделки? Ну и валите отсюда!»

r_asian ★☆☆
()
Ответ на: комментарий от Eddy_Em

> Вы меня явно не так поняли.

Ну тогда извините.

r_asian ★☆☆
()

ваша нелюбовь к jquery - странна, ибо там и так уже всё хорошо оптимизировано.

jQuery('form').get(0).onsubmit =
    function() {
        jQuery.ajax(
            {
                url: 'answer',
                type: 'POST',
                data: jQuery('form').serialize(),
                dataType: 'html',
                success: function(data) {
                },
                error: function() {
                }
            }
        );
        return false;
    }
AGUtilities ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.