我有一个通过随机算法生成的表格(测验)。提交渲染后是结果页面:问题是,如果用户单击后退箭头,将显示具有相同问题的表单,并且可以再次提交!我试图设置一个会话变量并使用树枝函数{如果定义了app.sesseion-> get('myVaryable')}则不显示提交按钮等...但是即使在我的控制器中删除了该变量,树枝仍然认为它是定义的... ??您有另一个简单的解决方案吗?
答案 0 :(得分:2)
在浏览器中单击后退按钮通常会导致页面从缓存中重新加载(与服务器无交互),因此除非用户刷新页面(重新-发送请求到服务器)。
您需要如下所示的javascript(前端代码)解决方案,以检查导航类型。
if (window.performance && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) {
// Disable the form
var inputs = document.getElementsByTagName("INPUT");
for (var i = 0; i < inputs.length; i++) {
inputs[i].disabled = true;
if (inputs[i].type === 'submit') {
inputs[i].remove();
}
}
}
我还建议您在处理表单的控制器中查找并适当地处理重复提交的内容,因为任何熟练的用户仍然可以提交表单。
参考文献: