表格提交在窗口关闭

时间:2012-01-31 16:03:36

标签: php javascript mysql

我做了一个简短的游戏,人们给出顺序呈现的问题的答案,并且他们的分数存储在用每个正确答案更新的变量中(即。  var Score = 0; function ScoreUpdate {if (event.keyCode == correctAnswer) {Score = Score +1;}})。最后,调用一个JavaScript函数,将这些变量放入一个表单中,然后将其“POST”到一个页面,然后将所有内容添加到MySQL数据库中。

问题是有些人会中途停止并简单地关闭窗口/标签,导致没有提交任何分数(因为JavaScript函数将所有变量放入表单并提交它未激活) 。因此,我正在寻找一种方法,可以自动激活功能以保存分数,提交表单并在用户关闭窗口时上传到数据库。这涉及到PHP和JS,因此我想知道所有这一切是否只能在一个事件中实现? (即window.onbeforeunload?)

我已经尝试过这个解决方案:https://stackoverflow.com/a/1632004/1092247但它不包括自动表单提交(它甚至对我来说都不起作用,因为它甚至在提交表单时仍会提示)。

正如您所看到的,我在这里相对较新,远不及高级的JS和PHP知识。任何帮助将非常感谢! :)

2 个答案:

答案 0 :(得分:2)

如果用户关闭窗口,则无法提交表单。你唯一能做的就是要求确认(即“你真的想要关闭窗户吗?”)。

不幸的是没有办法绕过它。 JavaScript根本不允许你这样做。

答案 1 :(得分:1)

如果确实想要保存所有这些中间结果,请在每个回答的问题后发送。

您可能需要引入某种会话,以便逐步在收到的个人答案中在服务器上构建完整的结果。

但这会稍微增加服务器的负载。

你可以处于这两个极端之间的某个地方(失去中间结果< ===>高服务器负载)。例如,仍然在某处累积答案并每隔N秒将它们发送到服务器。