Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何结合内容处置:附件临时停用onbeforeunload邮件?_Php_Javascript_Attachment_Onbeforeunload_Content Disposition - Fatal编程技术网

Php 如何结合内容处置:附件临时停用onbeforeunload邮件?

Php 如何结合内容处置:附件临时停用onbeforeunload邮件?,php,javascript,attachment,onbeforeunload,content-disposition,Php,Javascript,Attachment,Onbeforeunload,Content Disposition,我有一个页面insert.php,用户可以在其中输入表单 我使用javascript通知用户当页面关闭时可能会丢失插入的数据 <script language="JavaScript"> var needToConfirm = true; window.onbeforeunload = confirmExit; function confirmExit() { if ( needToConfirm ) return "Thi

我有一个页面
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>
save.php
中,我执行以下操作:

session_start();
header( 'Content-disposition: attachment; filename=download.dat' );
... echo $_SESSION-data ...
这将下载插入的数据,而不关闭已加载的
insert.php

问题在于javascript
needToConfirm
-变量保持为
false
。因此,当我在点击下载后关闭页面时(即使用户未确认下载),不会再显示任何警告,数据可能会丢失

对于如何解决这个问题的任何想法,我们都非常感激


(我猜问题与
insert.php
由于另一个页面的加载而没有完全重新加载有关…

您需要设置一个计时器,在超时后,将该值再次重置为true(您不必使用大于100ms的值)

把它放进碗里
因此,当有内容要显示时,页面会自动重新加载,但当只有附件时,计时器就会启动

谢谢。就我所能测试的范围而言,这是可行的。设置计时器似乎有点奇怪。。。但实际上,这可能是完美的。只要是这样,我就不会真的抱怨。
session_start();
... store $_POST in $_SESSION ...
Header( 'HTTP/1.1 301 Moved Permanently');
Header($'Location: save.php');
session_start();
header( 'Content-disposition: attachment; filename=download.dat' );
... echo $_SESSION-data ...
window.setTimeout('needToConfirm=true', 100);