Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.05.2014, 14:10
Новичок на форуме
Отправить личное сообщение для HarleyDavidson Посмотреть профиль Найти все сообщения от HarleyDavidson
 
Регистрация: 29.05.2014
Сообщений: 4

Отправка данных формы перед закрытием документа
Доброго всем дня! Господа гуру, выручайте плиз:
Имеется html с iframe вида:
<iframe id="ifrm" src="empty.php" width="100%" height="100%-150px" style="border:0; position:absolute;" frameborder="0"></iframe>

по нажатию кнопок яваскриптом меняется src - грузятся в фрейм разные html-ки с формами вида
<form name="main" action="1chs_srv.php" method="post">
.
Как мне сделать чтобы перед сменой html-ки (при нажатии кнопки в паренте) текущая форма отправила данные (сделала submit). Следующие конструкции не работают:
function save_data()
{
	document.main.submit();
}


1.
window.onunload=save_data;
- не работает
2.
<body style="width: 99%; onunload="save_data();" >
-не работает
3.
window.onclose=save_data;
- не работает

Подскажите на какое событие вешать - отправка должна быть именно перед сменой атрибута src у iframe - там не только кнопки но и други события меняют этот атрибут.
ЗЫ: Заранее благодарен тем кто не прошел мимо
Ответить с цитированием
  #2 (permalink)  
Старый 29.05.2014, 14:33
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

window.frames[0].document.getElemetById('ifrm').submit()
Ответить с цитированием
  #3 (permalink)  
Старый 29.05.2014, 14:54
Новичок на форуме
Отправить личное сообщение для HarleyDavidson Посмотреть профиль Найти все сообщения от HarleyDavidson
 
Регистрация: 29.05.2014
Сообщений: 4

Спасибо за внимание, но наверно я не совсем доходчиво объяснил:
отслеживать все места где меняется src слишком муторно, идея была поймать событие когда html выгружается из фрейма, вопрос стоял не как сабмитить, а на какое событие повесить этот сабмит, причем контролировать это нужно из html-ки которая находится в фрейме, а не из парентной, в которой находится сам фрейм.

submit у iframe`а?
Ответить с цитированием
  #4 (permalink)  
Старый 30.05.2014, 08:16
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Попробуй onbeforeunload или onpopstate для отслеживания изменения урла, и мне кажется тебе придется отправлять форму твою ajax'ом, и в коллбеке (success или complete) перезагружать страницу
Ответить с цитированием
  #5 (permalink)  
Старый 31.05.2014, 11:12
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

HarleyDavidson,
http://learn.javascript.ru/onload-on...onbeforeunload
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #6 (permalink)  
Старый 02.06.2014, 10:51
Новичок на форуме
Отправить личное сообщение для HarleyDavidson Посмотреть профиль Найти все сообщения от HarleyDavidson
 
Регистрация: 29.05.2014
Сообщений: 4

cyber, спасибо, я эту статью уже почти наизусть выучил . Ситуация следующая:

конструкция 1:
<body onbeforeunload="document.main.submit();return alert('Данные сохранены. Точно перейти?');">

IE 9 - форма сабмитится, алерт выдает, скрипт которому передано управление выполняется дальше.
FF 29 - форма сабмитится, алерт выдает, скрипт которому передано управление вылетает.
GC 34 - ноль эмоций - вообще не реагирует
Opera - принципиально не поддерживает событие onbeforeunload
конструкция 2:
function setHandler() {
	window.onbeforeunload = function() {
		document.main.submit();
		return "Данные сохранены. Точно перейти?";
	};
}
setHandler();

эксплорер и файерфокс ведут себя также, а вот хром, алерт выдает, скрипт дальше выполняет, а данные не сохраняются (не происходит сабмита однако).
Задача остается нерешенной - Как автоматом сохранить данные формы при попытке пользователя свалить со страницы или закрыть браузер (алерт в принципе не нужен - я его для наглядности воткнул). Желательно конечно кроссбраузерное решение (ну оперу фиг с ней можно выкинуть). Помогите плиз - уже 5 дней башку ломаю.
Ответить с цитированием
  #7 (permalink)  
Старый 02.06.2014, 14:16
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

HarleyDavidson, а не проще ли сделать кнопку "отправить" что бы юзер сам отправлял форму?
Это самое кроссбраузерное и простое решение.
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #8 (permalink)  
Старый 02.06.2014, 14:31
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Ну попробуй вручную ajax'ом данные передать...
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 04.06.2014, 15:14
Новичок на форуме
Отправить личное сообщение для HarleyDavidson Посмотреть профиль Найти все сообщения от HarleyDavidson
 
Регистрация: 29.05.2014
Сообщений: 4

Сообщение от cyber
а не проще ли сделать кнопку "отправить" что бы юзер сам отправлял форму?
Нет, не проще
Сообщение от Aetae
Ну попробуй вручную ajax'ом данные передать...
16 форм, от 12 до 47 полей ввода в каждой - в писателя перевоплощаться? опять же - ajax-запрос на какое событие вешать?
Ответить с цитированием
  #10 (permalink)  
Старый 04.06.2014, 19:28
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Сообщение от HarleyDavidson Посмотреть сообщение
16 форм, от 12 до 47 полей ввода в каждой - в писателя перевоплощаться? опять же - ajax-запрос на какое событие вешать?
Ну а что ты хочешь то от нас? Нет панацеи.
Вот тут максимально подробно разобрали вопрос.


На какое событие? На все подряд.
N форм? Гугли готовые решения для ajax отправки, и всё сведётся к вызову одной функции.
__________________
29375, 35

Последний раз редактировалось Aetae, 04.06.2014 в 19:32.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фоновая проверка данных формы перед отправкой egreek AJAX и COMET 6 20.07.2013 11:17
отправка данных из формы и вывод полученных данных sxe jQuery 2 21.05.2013 00:34
Отправка данных формы AJAX`ом? Jopses jQuery 4 20.02.2013 12:34
Вызов урла перед отправкой данных формы на сервер brazerok Events/DOM/Window 3 31.05.2011 12:49
Проверка и отправка данных из формы Катерина Общие вопросы Javascript 2 25.03.2010 16:56