在我们的应用系统中,禁止用户做出多次提交的操作是非常有必要的,比如在B2C这样的系统里,假如某页面有个去银行结算的提交按钮,可能因为系统或网络延迟,当用户点击提交后,返回给用户的依旧是未付款或等待付款的信息,那么我们的用户很可能就会再次去点击那个支付的提交按钮,最终导致系统出现异常或需要把第二次的付款退还给用户,这样的话,不仅给用户,也给我们自己带来了麻烦。那么有没有办法让用户只提交一次呢?
其实,我们可以从两方面入手来解决这个问题。比较安全一点的做法就是在后台进行操作,也就是说,当用户进行二次提交的时候,我们可以在后台进行判断,判断它是否是首次提交。具体的实现技术可以参考其它相关资料,接下来要讲的是第二种方法,我们可以从按钮本身入手,通过Javascript技术来实现这一需求,也就是提交之前在前台做相关的处理工作。这里给大家提供了三种思路,仅供参考。
第一种,当用户点击提交按钮后,我们可以把该按钮立即置为不可用状态。
第二种,设置一个js的全局变量,当用户点击按钮后,改变这个全局变量的状态,然后通过判断这个全局变量的状态来决定是否允许用户进行提交操作。
第三种,通过时间差来约束用户的重复提交。
注意,这里的三种方法最好配合ajax技术使用,即用户的操作都是在同一个页面中进行的,提交操作是通过ajax与后台交互完成,后台处理页面需返回一个布尔型变量或时间差,所以在用户看来,这是一个无刷新操作,因为上面这三种方法对于用户刷新页面的动作是无能为力的。