- 现有的用户注册登录框, 不论是ajax 还是 表单提交, 用户狂点注册按钮或enter 都会导致当前页面还没有调到注册成功的页面时, 发起两次以上的注册请求。
不使用遮挡注册按钮的情况下(因为遮挡注册按钮不能屏蔽enter触发的注册请求), 通过js来解决, 有什么好的解决思路?
现在准备测试下 用个标志变量判断是否已经发起一次请求,请求结束了,才能发起第二个请求。这种方案是否合理
有一个token机制,最早接触的时候是在struts上。大致是这样的,当请求注册页面的时候,服务器会返回给浏览器正常的页面和一个隐藏的input,它的值是一个服务器生成的字符串。当你点击提交的时候,这个token会被加载到服务器端,服务器一旦得到了这个token,匹配后立即删除服务器上的token。当用户再提交的时候,因为找不到对应的token,所以不会重复的提交用户的信息。你可以利用相似的手法去处理。
8 回答5.8k 阅读✓ 已解决
9 回答9.1k 阅读
6 回答4.7k 阅读✓ 已解决
5 回答3.5k 阅读✓ 已解决
4 回答7.9k 阅读✓ 已解决
7 回答9.7k 阅读
5 回答7.1k 阅读✓ 已解决
ajax和表单提交解决方法差不多
(1)setTimeout + clearTimeout 连续的点击会把上一次点击清除掉,也就是ajax请求会在最后一次点击后发出去;
(2)disable 按钮;
(3)每次点击都发请求,往回调里加闭包带唯一递增的id,每一次请求回调以后看这个id是不是主函数体里最后一次点击的id,是则调用回调,不是则返回,也就是ajax回数后看这个回调是不是最后一次点击的回调,不是就不操作页面了;
第1,2种请求是做用户疯狂快速点击时防止发大量请求的
第3种是用户不那么频繁的点击,但是每一次点击ajax请求回数时间比较长,也就是第二次请求可能比第一次先回数这种特殊情况的