Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   iFrame, отправка файла, завершение загрузки и вопросы взаимодействия (https://javascript.ru/forum/misc/30974-iframe-otpravka-fajjla-zavershenie-zagruzki-i-voprosy-vzaimodejjstviya.html)

Vincent 22.08.2012 12:38

iFrame, отправка файла, завершение загрузки и вопросы взаимодействия
 
Привет. Вникаю в js по мере возникновения необходимости.
Надо:
1. Отправить файл на сервер
3. Если возникла ошибка при загрузке - отобразить сообщение об ошибке
3. Если условие из п.2 не наступило, обновить некую информацию на странице после обращения к БД
4. Ожидать получения информации от сервера и динамически отображать ее на той же странице.

Вот информация, которую мне удалось найти и понять:
1. Файл, без перезагрузки страницы, можно отправить только средствами iFrame.
2. При этом надо как то понять, завершена ли загрузка или нет. Это можно сделать отображением xml в скрипте, который будет загружать файл (на который будет отправлена форма в iframe). В том же скрипте сделать событие onload(), после его наступления проверять - есть ли сообщение об ошибке, если нет - передавать управление другой функции, которая
3. средством xmlHTTPRequest() обновит БД, затем обновит информацию на странице (к примеру сообщение "ОК" в определенном участке странциы), затем
4. передаст управление другой функции, которая в цикле будет опрашивать(?) сервер и получая ответ будет обновлять необходимую информацию на странице.

Верно ли я понял, или это изобретение велосипеда?
Может есть более оптимальный способ?

Deff 22.08.2012 12:46

Цитата:

Сообщение от Vincent
1. Отправить файл на сервер

какой Файл ?
Картинку - бинарник - текст ?

Vincent 22.08.2012 13:07

Deff, любой, и картинку и бинарник

Deff 22.08.2012 13:22

Vincent,
Ну тады форму отправляем во фрейм, на фреймо странице скрипт - выдающий на родителя инфу об удачности - неудачности отправки , к примеру запустить функцию на главной странице (если фрейм на том же домене - проблем быть не должно)
По инфе об удачности - в данной функции продолжаем свои действия на главной так или иначе

Vincent 22.08.2012 13:36

Цитата:

Сообщение от Deff (Сообщение 199657)
скрипт - выдающий на родителя инфу об удачности - неудачности отправки

Deff, вот это не совсем понял. Скрипт должен срабатывать по событию onload() фреймостраницы, так как я и написал, или как то по другому?

Deff 22.08.2012 13:54

Vincent,
Onload - долгое событие - секунды - лучше сам фрейм сообщает скриптом на родителя - это задолго до онлоад
2. Можно не мучать главную - а сразу поставить форму во фрейм, а там, она без таргет меняет адреса и т.д - по окончанию деяний можно из фрейма сообщить скриптом на родителя - что можно фрейм удалять

Vincent 22.08.2012 15:37

Deff, можно пример накидать схематично или более подробно описать? "сам фрейм сообщает скриптом на родителя" это как? чем?
"по окончанию деяний можно из фрейма сообщить скриптом на родителя" это так же не совсем понятно, сообщать так же средствами js?

Deff 22.08.2012 16:27

Ну к примеру на странице фрейма
<script type="text/javascript">
if(parent.document!=this.document){

	parent.MyAlert(); //Вызываем Функцию с Главной

}
</script>

На Главной
<script type="text/javascript">
 function MyAlert() {

	alert("Он во фрейме")
}
</script>

Vincent 22.08.2012 18:59

Ага.. т.е., верно ли я понимаю, код во фрейме сработает сразу после его загрузки? но тогда зачем нужна проверка
Код:

if(parent.document!=this.document){
если это условие будет выполнено в любом случае?

Deff 22.08.2012 19:07

Vincent,
А если Вы откроете страницу не во фрейме - а чисто в браузере ?
Если не нужна -выкиньте


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