есть родительское окно, из него вызывается дочернее через window.open
далее в дочернем окне вводятся данные в форму, после чего делается сабмит, рефреш родителя, и закрытие окна
document.AddComment.submit();
window.opener.refresh();
self.close();
Сабмит вызывает php, который сохраняет данные в базу.
НО ! в половине случаев данные в базе не обновляются. Экспериментально устанослено, что если отключить self.close(); то данные сохраняются замечательно. Пробовал экспериментировать с ignore_user_abort ( true ); но ни фига. Проблема решаться не желает
Буду очень признателен если сможете помочь.
В php и java я новичок, я здесь никаких других вопиющих ляпов не сделал ?
Спасибо
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
<?php
// РОДИТЕЛЬ
require_once("include_db_connect.php");
echo $logged_user."<br><br>";
?>
<html><body> <table cellpadding="0" cellspacing="0" bordercolor="#CCCCCC" border="1">
<tr><td>jobID</td><td rowspan= 3 >Задача</td><td rowspan= 3 >Отметки о выполнении</td></tr>
<tr><td>Запись создана</td></tr>
<tr><td>Запись изменена</td></tr>
<?
// Функция для замены пустого значения на
Function nz($arg) {
if (empty($arg)) return " ";
else return $arg; }
$qry = mysql_query("Select `jobID`, `CreatedBy`, `CreatedTime`, `LastModBy`, `LastModTime`, `ToDo`, `Done`
From `job`");
While ($row = mySql_fetch_array($qry)) {
echo "<tr><td>".$row["jobID"]."</td> <td rowspan=3>".$row["ToDo"]."</td><td rowspan=3>".nz($row["Done"])."</td></tr>
<tr><td>".$row["CreatedBy"]." ".date("d.m.y H:i", $row["CreatedTime"])."</td></tr>
<tr><td>".$row["LastModBy"]." ".date("d.m.y H:i", $row["LastModTime"])."</td></tr>
";
}
?>
</table><br><br>
<button onclick="fun1()">Open window</button>
<br><br><button onclick="refresh()">Refresh</button>
<script language="JavaScript">
function fun1(){ win = window.open('jobs_home_add_comment.php','AddComment','toolbar=0'); }
</script>
<script language="JavaScript">
<!--
var sURL = unescape(window.location.pathname);
function refresh() {
// This version of the refresh function will cause a new entry in the visitor's history. for browsers that only support JavaScript 1.0.
window.location.href = sURL;}
//-->
</script>
<script language="JavaScript1.1">
<!--
function refresh() {
// This version does NOT cause an entry in the browser's page view history. Most browsers will always retrieve
// the document from the web-server whether it is already in the browsers page-cache or not.
window.location.replace( sURL );
}
//-->
</script>
<script language="JavaScript1.2">
<!--
function refresh() {
window.location.reload( true ); // false=all we need to do is cause the JavaScript block in the document body to be re-evaluated (no server call)
}
//-->
</script>
</html></body>
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<?php
// ДОЧЕРНЕЕ ОКНО
require_once("include_db_connect.php");
echo $logged_user."<br><br>";
?>
<html><body>
<FORM NAME="AddComment" action="jobs_home_add_comment_go.php" method="post">
Введите примечание: <BR>
<INPUT TYPE="text" NAME="TheComment" VALUE="" SIZE= 50 cols="50" rows="5">
<BR><BR>
<INPUT TYPE="button" VALUE="Send Comment" onClick="SendComment()">
</FORM>
<script>
function SendComment(){
document.AddComment.submit();
window.opener.refresh();
self.close(); // ЕСЛИ УБРАТЬ ЭТУ СТРОКУ, ТО ДАННЫЕ ПЕРЕДАЮТСЯ НОРМАЛЬНО !!!
}
</script>
</html></body>
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?php
// ОБРАБОТКА
require_once("include_db_connect.php");
//echo $logged_user."<br><br>";
ignore_user_abort ( true );
$qry = mysql_query("Update job set Done = Concat(Done, '".$_POST['TheComment']."') Where jobID=1");
?>