Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Отправка формы о обновление родительского окна
 
 автор: shest   (02.02.2007 в 00:18)   письмо автору
 
 

Здравствуйте. Подскажите пожалуйста, как обновить данные в родительском окне. Открываю окно window.open
В дочернем окне обрабатывается форма php. Причём чтобы она обработалась и окно закрылось нажатием одной кнопки, пришлось сделать так:
onmousedown="frm.submit()"; onmouseup="clos()

function clos()
{
window.close();


}
Ну это всё работает, а для того, чтобы по закрытии окна обновилась инфа в родительском, вставил в функцию parent.location.href= ("url");
Теперь, если window.close() убрать, родительское окно загружается в дочернее, если вставить-окно закрывается, а инфа в род. окне не обновляется. Правда форма обрабатывается и в том и другом случае. Подскажите, как выйти из ситуации.

   
 
 автор: RMW   (02.02.2007 в 00:50)   письмо автору
 
   для: shest   (02.02.2007 в 00:18)
 

opener.reload() - обновить родительское окно.

   
 
 автор: Shest   (02.02.2007 в 07:03)   письмо автору
 
   для: RMW   (02.02.2007 в 00:50)
 

Не выходит. Да и как это соединить? opener-свойство window, a reload- метод location.

   
 
 автор: RMW   (02.02.2007 в 13:01)   письмо автору
 
   для: Shest   (02.02.2007 в 07:03)
 

Ну, значит

opener.location.reload()

   
 
 автор: Shest   (02.02.2007 в 16:31)   письмо автору
 
   для: RMW   (02.02.2007 в 13:01)
 

Нашёл другое решение:
В родительском окне

function rel()
  {
      document.location.href='index.php';
  }


в дочернем

 function clos()
  {
  if (document.frm.elements[1].value!="")
   {
    frm.submit();
    window.opener.rel();
    window.close();
   }
  }

Вот правда теперь другая проблема. При совершенно равных условиях форма то отправляется, то нет (примерно через раз) Буду разбираться :)

   
 
 автор: 12345   (02.02.2007 в 16:36)   письмо автору
 
   для: Shest   (02.02.2007 в 16:31)
 

document.location.href - такого нет (мало ли, что работает). Есть document.location (только чтение), который не рекомендуется, вместо него document.URN, и есть location.href . (объект объекта window)

По коду - не надо делать close() в одном скрипте с другими. Первое решение было лучше, хотя и трюк. Или, чтобы совсем нормально - setTimeout("имя_окна.close()",1);

   
 
 автор: Shest   (03.02.2007 в 00:04)   письмо автору
 
   для: 12345   (02.02.2007 в 16:36)
 

Спасибо. document.location.href я в умной книге взял, прада она старая (2000г)
Но, похоже, он не подходит (как и document.location.replace
Они как-то странно работают. После перехода по адресу данные обновляются хаотично, то есть два раза подряд обновляются, один раз нет и наоборот хотя запись в файлы (отправка формы) каждый раз выполняется. Кэширование я запретил.
Вот reload действует железно, но каждый раз выскакивает окно с подтверждением повторной отправки данных. Как это действие подавить?

   
 
 автор: Shest   (03.02.2007 в 09:42)   письмо автору
 
   для: Shest   (03.02.2007 в 00:04)
 

Ну чтоже, никто не знает, как при reload избавиться от повторной отправки данных? :(

   
 
 автор: RMW   (03.02.2007 в 12:56)   письмо автору
 
   для: Shest   (03.02.2007 в 09:42)
 

Возможнно без reload так:
location+='?'+Math.random();
А может дело не в кешировании?
А страница после отправки
формы из дочернего окна не обновляется саме по себе?
Может попробовать поиграться с target формы.

Например в родительском окне в скрипте
name='main';
В дочернем в форме
<form target="main"...

   
 
 автор: shest   (04.02.2007 в 01:06)   письмо автору
 
   для: RMW   (03.02.2007 в 12:56)
 

Решил оставить reload, А от повторной отправки данных отделался так: session_start();, из -за которой повторную отправку данных требовал браузер, запускаем только в случае удачного введения логина и пароля, потом делаем перезагруз

 echo "<meta http-equiv=refresh content='0; url=index.php'>";


Спасибо. Хотя наверное придётся от отдельного окна отказаться, потому что в IE и фоксе это действует безотбойно, в opera обновляет данные, как придётся.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования