我有一个页面insert.php
,用户可以在其中输入表单。
当页面关闭时,我使用 javascript 通知用户可能丢失插入的数据。
<script language="JavaScript">
var needToConfirm = true;
window.onbeforeunload = confirmExit;
function confirmExit() {
if ( needToConfirm )
return "This page is asking you to confirm that you want to leave - data you have entered may not be saved.";
}
</script>
然后我有一个包含一个元素的表单,用于下载(“保存”)插入的数据。
<form action='insert.php' method='post'>
... other input elemets ...
<input type="submit" name="save" value="Save" onclick="needToConfirm = false;">
</form>
按下此保存按钮时,不会丢失任何数据,因为表单只是重新加载自身并使用$_POST
-data 重新填充表单。因此,我将needToConfirm
变量设置false
为不让用户担心。
此外,使用以下$_POST
命令重新加载页面 ( ) 时会下载 -data insert.php
:
session_start();
... store $_POST in $_SESSION ...
Header( 'HTTP/1.1 301 Moved Permanently');
Header($'Location: save.php');
我在哪里save.php
这样做:
session_start();
header( 'Content-disposition: attachment; filename=download.dat' );
... echo $_SESSION-data ...
这会下载插入的数据而不关闭已加载的insert.php
.
问题是 javascriptneedToConfirm
变量保持在false
. 因此,当我在单击下载后关闭页面时(即使用户未确认下载)不再显示警告并且数据可能会丢失。
任何如何解决这个问题的想法都非常感谢。
(我猜这个问题与insert.php
由于加载其他页面而没有完全重新加载有关......)