Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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 窗口关闭时提交表单?_Php_Javascript_Jquery_Forms - Fatal编程技术网

Php 窗口关闭时提交表单?

Php 窗口关闭时提交表单?,php,javascript,jquery,forms,Php,Javascript,Jquery,Forms,有谁能告诉我如何在两页以上提交表单,如果表单在第二页关闭,它仍然会自动提交第一页的信息 例如 第1页: 全名 电子邮件 电话号码 用户点击提交 第2页: 感谢您提交详细信息,请选择回拨时间 然后,用户将关闭窗口或输入回拨时间并按submit,但我需要提交原始信息,即使他们在第二页关闭窗口且未输入回拨时间 我在考虑是否可以使用会话变量来存储信息,然后在窗口关闭时使用javascript/jquery提交表单 有人能建议最好的办法是这样做吗 我可能还应该提到,我将数据插入MySQL表,然后使用CUR

有谁能告诉我如何在两页以上提交表单,如果表单在第二页关闭,它仍然会自动提交第一页的信息

例如

第1页: 全名 电子邮件 电话号码

用户点击提交

第2页: 感谢您提交详细信息,请选择回拨时间

然后,用户将关闭窗口或输入回拨时间并按submit,但我需要提交原始信息,即使他们在第二页关闭窗口且未输入回拨时间

我在考虑是否可以使用会话变量来存储信息,然后在窗口关闭时使用javascript/jquery提交表单

有人能建议最好的办法是这样做吗

我可能还应该提到,我将数据插入MySQL表,然后使用CURL发布数据。因此,我可以很容易地插入到数据库中,然后只要在最后一个id上执行update语句(如果回调时间已提交)

但是如果第二个表单页面上的窗口关闭了,我不知道如何发布最后一条MySQL记录

$(window).bind('beforeunload', function() { 
    $("#form-submit").click();
});
其中表单提交是提交按钮的ID。

每当用户出于任何原因离开页面时,beforeunload事件都会触发

例如,如果用户提交表单、单击链接、关闭窗口或选项卡,或者使用地址栏、搜索框或书签转到新页面,则会触发该命令

您可以使用以下代码排除表单提交和超链接,但其他框架除外:

var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });

$(window).bind("beforeunload", function() { 
    return inFormOrLink || confirm("Do you really want to close?"); 
})
live方法不适用于submit事件,因此如果添加新表单,还需要将处理程序绑定到该表单

请注意,如果其他事件处理程序取消提交或导航,则如果稍后窗口实际关闭,您将丢失确认提示。您可以通过在submit and click事件中记录时间,并检查beforeunload是否在几秒钟后发生来修复此问题。

您真的不能

$(window).bind('beforeunload', function() { 
    // Do submit here
});
可能看起来有用,但是

在beforeunload阶段,不允许常规表单提交,即使用POST或GET重定向到另一个页面,因此将不起作用


b AJAX表单提交将触发,但您永远无法确定它们是否会到达,因为浏览器不会等待回调发生,而是在代码运行后关闭窗口。

您最好的选择是在第1页提交数据,在第2页提交修改/添加/交换所需的数据。真的没必要太聪明了,伊姆霍。好的开始,但要确认。。。;不允许在beforeunload期间执行,并将被忽略。您只需返回要在确认框中显示的文本,如返回“是否确实要关闭?”;离开b,一旦浏览器发出AJAX请求,它将完成beforeunload函数并离开。一旦它离开,大多数浏览器都会中止AJAX请求,这可能会也可能不会阻止它到达服务器或其他更好的地方。不知道正在运行的请求将被主动取消。这是怎么回事?由于请求已经被触发,取消操作将如何阻止请求到达服务器?我真希望我知道,我从来没有理解过这一点。我不知道它是否向服务器发送了一些信息,并说不要费心响应最后一个请求和/或不处理最后一个请求,但我不知道服务器实际上如何处理这些信息。事实上,我从来没有费心测试。你是对的,浏览器不会知道是否一切都成功/出错,因为它没有时间接收响应。是的,没错。。。。好吧,如果我在任何时候发现并记住这个帖子,我会发布一个更新: