Обновление фрейма из диалогового окна

 
0
 
JavaScript
ava
guest | 12.10.2004, 11:00
Добрый день всем....

Есть страница и фреймов....один фрейм вызывает диалоговое окно, которое меняет некоторую информацию в Базе, предназначенную для отображения в этом фрейме....

как сделать чтобы после закрытия диалогового окна фрейм обновлялся?

пробовал делать ссылку обновления после комнады вызова диалог. окна, не проходит.....

может проблема в том, что диалоговое окно вызывается по ссылки из слоя, который изначально не виден?

буду благодарен, если поможете разобраться...
Comments (12)
ava
Alx | 12.10.2004, 10:41 #
что за окно? модальное? кинь вксь скрипт, плз!
ava
guest | 12.10.2004, 10:58 #
вызываю модальное окно из слоя, который появляется типа контекстного меню...

форма в диалоговом окне

<?php
if(isset($namefolder)) {
mysql_query("INSERT INTO folders VALUES ($max[0],'$namefolder')"); // добавляю папку в Базу MySQL
echo("<script language=\"JavaScript\" type=\"text/javascript\">alert('Папка добавлена');");
echo("window.opener.location='folder.php';"); // этим пытаюсь обновить окно, откуда появилось диалоговое
echo("window.close();</script>"); //закрываю диалоговое окно
}
?>

<form action="add_folder.php" enctype="multipart/form-data" method="post">
<p align=center>Название папки<br><input type=text name="namefolder" size=25>
<p align=center><input type=submit value="Добавить">
</form>


для обновления пробовал делать window.frame[имя фрейма].document.location
все равно не работает....

явно где то что-то не то делаю :( а где не пойму....
ava
Alx | 12.10.2004, 12:53 #
<html>
<head>
</head>
<body>
<DIV ID="folderHTML" STYLE="display:block;">
<DIV style="background-color: #D4D0C8;" onmouseover="this.style.background='darkblue'; this.style.color='white'" onmouseout="this.style.background='#D4D0C8'; this.style.color='black'">
<SPAN onclick="window.open('add_folder.php','','width=210,height=155');" style="padding: 5px; cursor: hand; font-size: 10px; font-family: Verdana;" >добавить папку</SPAN>
</DIV>
</DIV>
</body>
</html>


<form action="add_folder.php" enctype="multipart/form-data" method="post">
<p align=center>Название папки<br><input type=text name="namefolder" size=25>
<p align=center><input type=submit value="Добавить">
</form>
<?
if(isset($namefolder)) {
mysql_query("INSERT INTO folders VALUES ($max[0],'$namefolder')");
echo("<script language=\"JavaScript\" type=\"text/javascript\">alert('Папка добавлена');");
echo("window.opener.document.location.reload();");
echo("window.close();</script>");
}
?>


вот, работает в IE и Mozilla. smile
ava
guest | 12.10.2004, 13:14 #
дак это тогда не диалоговое окно уже вызывается....а всплывающее....а я хотел именно диалоговое....может у кого блокировка стоит от всплывающих окон.....

а по другому что ли никак нельзя осуществить задуманное?
ava
Alx | 12.10.2004, 13:26 #
я не знаю, кого больше - людей с блокировкой popup или опрещиков, мозильщиков и т.п.

как по-другому я не знаю, сюдя по всему - в модальных окнах PHP не работает!
ava
guest | 12.10.2004, 14:00 #
но ведь window.close() закрывает диалоговое окно....значит наверное команда выпоняется......

может проблема как раз в том, что window.opener не определяется.....
ava
GoodBoy | 12.10.2004, 15:06 #
если не ошибаюсь, то для модальных окон нужно ковырять: window.dialogArguments
ava
Alx | 12.10.2004, 15:18 #
уф блин, как я намучился!!! :)

главная проблема была, что в модальных окнах не выполняется PHP и не работал alert(). Вот что получилось:

<html>
<head>
</head>
<body>
<DIV ID="folderHTML" STYLE="display:block;">
<DIV style="background-color: #D4D0C8;" onmouseover="this.style.background='darkblue'; this.style.color='white'" onmouseout="this.style.background='#D4D0C8'; this.style.color='black'">
<SPAN onclick="window.showModelessDialog('add_folder.php',window,'dialogWidth=210px;dialogHeight=155px;scroll=no;help=no;');" style="padding: 5px; cursor: hand; font-size: 10px; font-family: Verdana;" >добавить папку</SPAN>
</DIV>
</DIV>
</body>
</html>


<html>
<head>
<style>
body {margin: 0px}
</style>
</head>
<body>
<iframe src="script.php" height="155" width="210"></iframe>
</body>


<html>
<head>
<style>
body {margin: 0px}
</style>
</head>
<body>
<form action="script.php" enctype="multipart/form-data" method="get">
<p align=center>Название папки<br><input type=text name="namefolder" size=25>
<p align=center><input type=submit value="Добавить">
</form>
</body>
<?
if(isset($namefolder)) {
mysql_query("INSERT INTO folders VALUES ($max[0],'$namefolder')");
echo "<script>alert('папка добавлена!');parent.window.dialogArguments.location.reload();window.close();</script>";
}
?>


ВОТ! smile
ava
guest | 13.10.2004, 05:47 #
я так и делал: вставлял в модальное окно фрейм и туда пихал код PHP....

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

или может я не правильно передаю параметр dialogArguments

вот при вызове окна там вроде в параметрах стоит window....я прям так и пишу.....или здесь надо название фрейма (или окна) писать?
ava
Alx | 13.10.2004, 07:57 #
а, тебе ещё и фрейм нужен! Ладно, щас с фреймом попробую! smile
ava
Alx | 13.10.2004, 09:06 #
3 фрема. В 3-ем iframe. Всё работает великолепно! :)

frameset.html

<html>
<head>
</head>
<frameset rows="60%,30%" name="frset" frameborder="yes" border="1">
<frameset cols="50%,50%" name="frset" frameborder="yes" border="1">
<frame src="1.html" name="fr1" frameborder="1">
<frame src="2.html" name="fr2" frameborder="1">
</frameset>
<frame src="3.html" name="fr3" frameborder="1">
</frameset>
</html>


1.html

<html>
<head>
</head>
<body bgcolor="blue">
<DIV ID="folderHTML" STYLE="display:block;">
<DIV style="background-color: #D4D0C8;" onmouseover="this.style.background='darkblue'; this.style.color='white'" onmouseout="this.style.background='#D4D0C8'; this.style.color='black'">
<SPAN onclick="window.showModelessDialog('add_folder.php?' + Math.random(),window,'dialogWidth=210px;dialogHeight=155px;scroll=no;help=no;');" style="padding: 5px; cursor: hand; font-size: 10px; font-family: Verdana;" >добавить папку</SPAN>
</DIV>
</DIV>
</body>
</html>


2.html

<html>
<head>
</head>
<body bgcolor="red">
<DIV ID="folderHTML" STYLE="display:block;">
<DIV style="background-color: #D4D0C8;" onmouseover="this.style.background='darkblue'; this.style.color='white'" onmouseout="this.style.background='#D4D0C8'; this.style.color='black'">
<SPAN onclick="window.showModelessDialog('add_folder.php?' + Math.random(),window,'dialogWidth=210px;dialogHeight=155px;scroll=no;help=no;');" style="padding: 5px; cursor: hand; font-size: 10px; font-family: Verdana;" >добавить папку</SPAN>
</DIV>
</DIV>
</body>
</html>


3.html

<html>
<head>
</head>
<body>
<iframe src="1.html" height="100%" width="100%">
</body>
</html>


add_folder.php

<html>
<head>
<style>
body {margin: 0px}
</style>
</head>
<body>
<iframe src="script.php" height="155" width="210"></iframe>
</body>


script.php

<html>
<head>
<style>
body {margin: 0px}
</style>
</head>
<body>
<form action="script.php" enctype="multipart/form-data" method="get">
<p align=center>Название папки<br><input type=text name="namefolder" size=25>
<p align=center><input type=submit value="Добавить">
</form>
</body>
<?
if(isset($namefolder)) {
mysql_query("INSERT INTO folders VALUES ($max[0],'$namefolder')");
echo "<script>alert('папка добавлена!');parent.window.dialogArguments.location.reload();window.close();</script>";
}
?>
ava
guest | 18.10.2004, 08:15 #
все работает...разобрался.....спасибо за урок...smile
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  guest   GoodBoy   Alx
advanced
Submit