Php 窗口关闭时提交表单?
有谁能告诉我如何在两页以上提交表单,如果表单在第二页关闭,它仍然会自动提交第一页的信息 例如 第1页: 全名 电子邮件 电话号码 用户点击提交 第2页: 感谢您提交详细信息,请选择回拨时间 然后,用户将关闭窗口或输入回拨时间并按submit,但我需要提交原始信息,即使他们在第二页关闭窗口且未输入回拨时间 我在考虑是否可以使用会话变量来存储信息,然后在窗口关闭时使用javascript/jquery提交表单 有人能建议最好的办法是这样做吗 我可能还应该提到,我将数据插入MySQL表,然后使用CURL发布数据。因此,我可以很容易地插入到数据库中,然后只要在最后一个id上执行update语句(如果回调时间已提交) 但是如果第二个表单页面上的窗口关闭了,我不知道如何发布最后一条MySQL记录Php 窗口关闭时提交表单?,php,javascript,jquery,forms,Php,Javascript,Jquery,Forms,有谁能告诉我如何在两页以上提交表单,如果表单在第二页关闭,它仍然会自动提交第一页的信息 例如 第1页: 全名 电子邮件 电话号码 用户点击提交 第2页: 感谢您提交详细信息,请选择回拨时间 然后,用户将关闭窗口或输入回拨时间并按submit,但我需要提交原始信息,即使他们在第二页关闭窗口且未输入回拨时间 我在考虑是否可以使用会话变量来存储信息,然后在窗口关闭时使用javascript/jquery提交表单 有人能建议最好的办法是这样做吗 我可能还应该提到,我将数据插入MySQL表,然后使用CUR
$(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请求,这可能会也可能不会阻止它到达服务器或其他更好的地方。不知道正在运行的请求将被主动取消。这是怎么回事?由于请求已经被触发,取消操作将如何阻止请求到达服务器?我真希望我知道,我从来没有理解过这一点。我不知道它是否向服务器发送了一些信息,并说不要费心响应最后一个请求和/或不处理最后一个请求,但我不知道服务器实际上如何处理这些信息。事实上,我从来没有费心测试。你是对的,浏览器不会知道是否一切都成功/出错,因为它没有时间接收响应。是的,没错。。。。好吧,如果我在任何时候发现并记住这个帖子,我会发布一个更新: