我做了一个简短的游戏,人们给出顺序呈现的问题的答案,并且他们的分数存储在用每个正确答案更新的变量中(即。
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知识。任何帮助将非常感谢! :)
答案 0 :(得分:2)
如果用户关闭窗口,则无法提交表单。你唯一能做的就是要求确认(即“你真的想要关闭窗户吗?”)。
不幸的是没有办法绕过它。 JavaScript根本不允许你这样做。
答案 1 :(得分:1)
如果确实想要保存所有这些中间结果,请在每个回答的问题后发送。
您可能需要引入某种会话,以便逐步在收到的个人答案中在服务器上构建完整的结果。
但这会稍微增加服务器的负载。
你可以处于这两个极端之间的某个地方(失去中间结果< ===>高服务器负载)。例如,仍然在某处累积答案并每隔N秒将它们发送到服务器。