javascript - 解决注册登录 用户重复提交
PHPz
PHPz 2017-04-10 13:09:52
[JavaScript讨论组]
  1. 现有的用户注册登录框, 不论是ajax 还是 表单提交, 用户狂点注册按钮或enter 都会导致当前页面还没有调到注册成功的页面时, 发起两次以上的注册请求。
    不使用遮挡注册按钮的情况下(因为遮挡注册按钮不能屏蔽enter触发的注册请求), 通过js来解决, 有什么好的解决思路?
    现在准备测试下 用个标志变量判断是否已经发起一次请求,请求结束了,才能发起第二个请求。这种方案是否合理
PHPz
PHPz

学习是最好的投资!

全部回复(5)
数据分析师

javascript - 解决注册登录 用户重复提交-PHP中文网问答-javascript - 解决注册登录 用户重复提交-PHP中文网问答

围观一下哦,学习一下。

阿神

ajax和表单提交解决方法差不多
(1)setTimeout + clearTimeout 连续的点击会把上一次点击清除掉,也就是ajax请求会在最后一次点击后发出去;
(2)disable 按钮;
(3)每次点击都发请求,往回调里加闭包带唯一递增的id,每一次请求回调以后看这个id是不是主函数体里最后一次点击的id,是则调用回调,不是则返回,也就是ajax回数后看这个回调是不是最后一次点击的回调,不是就不操作页面了;

第1,2种请求是做用户疯狂快速点击时防止发大量请求的
第3种是用户不那么频繁的点击,但是每一次点击ajax请求回数时间比较长,也就是第二次请求可能比第一次先回数这种特殊情况的

怪我咯

有一个token机制,最早接触的时候是在struts上。大致是这样的,当请求注册页面的时候,服务器会返回给浏览器正常的页面和一个隐藏的input,它的值是一个服务器生成的字符串。当你点击提交的时候,这个token会被加载到服务器端,服务器一旦得到了这个token,匹配后立即删除服务器上的token。当用户再提交的时候,因为找不到对应的token,所以不会重复的提交用户的信息。你可以利用相似的手法去处理。

黄舟

补充一点,ajax提交的方式可以判断xhr的readyState是否为4而得到是否完成了一次提交,不是4的都return掉

伊谢尔伦

如果你使用jquery ajax form 里面有一个berforsubmit option 参数。你可以在之前做一个登录状态的检查。禁止按钮的给人的体验很差,不建议使用

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号