`

防止表单多次请求

阅读更多

不推荐用外部变量锁定或修改按钮状态的方式,因为那样比较难:

  • 要考虑并理解 success, complete, error, timeout 这些事件的区别,并注册正确的事件,一旦失误,功能将不再可用;
  • 不可避免地比普通流程要要多注册一个 complete 事件;
  • 恢复状态的代码很容易和不相干的代码混合在一起;


我推荐用主动查询状态的方式(A、B,jQuery 为例)或工具函数的方式(C、D)来去除重复操作,并提供一些例子作为参考:

A. 独占提交
只允许同时存在一次提交操作,并且直到本次提交完成才能进行下一次提交。

module.submit = function() {
  if (this.promise_.state() === 'pending') {
    return
  }
  return this.promise_ = $.post('/api/save')
}


B. 贪婪提交
无限制的提交,但是以最后一次操作为准;亦即需要尽快给出最后一次操作的反馈,而前面的操作结果并不重要。

module.submit = function() {
  if (this.promise_.state() === 'pending') {
    this.promise_.abort()
  }
  // todo
}
分享到:
评论

相关推荐

    防止表单重复提交

    本篇文章将深入探讨如何防止表单重复提交,主要关注于基于Struts2框架的解决方案。 首先,理解表单重复提交的原因。用户在点击提交按钮后,如果网络延迟或用户误操作导致页面刷新或再次点击提交,就可能发生重复...

    防止表单重复提交(asp.net )

    为了确保用户在提交表单时不会无意或有意地多次发送请求,我们需要实施有效的防止表单重复提交的策略。以下是一些关键知识点: 1. **表单重复提交的类型**: - **用户行为**:用户可能意外按下刷新按钮,导致已...

    Asp.net防止页面被多次提交

    ### ASP.NET 防止页面被多次提交 在 Web 开发中,特别是在 ASP.NET 这样的框架下,防止页面被多次提交是一个常见的需求。当用户点击提交按钮后,可能会因为网络延迟、误操作等原因而重复点击提交按钮,导致数据被多...

    springboot2.1+redis+拦截器 防止表单重复提交

    当用户点击提交按钮多次或者由于网络延迟导致的重复提交,服务器可能会接收到相同的数据请求多次,这可能会对业务逻辑产生不良影响。例如,在电商网站中,如果用户多次点击购买按钮,可能会导致订单数量错误。 为了...

    防止Layui form表单重复提交的实现方法

    但仅仅这样做是不够的,因为用户可能会多次点击提交按钮,导致多次触发JavaScript的提交逻辑。 其次,可以采用Layui的lay-filter属性来标记表单,以便对特定的表单进行控制。在表单的标签中加入lay-filter="form...

    修改禁止多次重复提交

    在IT行业中,尤其是在Web开发领域,防止用户多次重复提交数据是一项重要的任务,这可以避免数据库出现冗余数据,保持系统稳定。"修改禁止多次重复提交"这个话题涉及到前端交互、后端处理以及数据库操作等多个层面。...

    thinkphp3.2 防止表单重复提交

    在Web开发中,防止表单重复提交是一个重要的问题,它能确保用户操作的唯一性和数据的一致性。ThinkPHP 3.2 是一个基于MVC模式的PHP开发框架,提供了丰富的功能来帮助开发者构建安全、高效的应用。在这个场景中,我们...

    自定义标签防止表单重复提交

    本文将深入探讨如何通过自定义标签来防止表单的重复提交,以确保数据的一致性和系统的稳定性。 首先,理解表单重复提交的问题。当用户点击提交按钮时,如果网络连接不稳定或者用户快速多次点击,可能会导致同一份...

    按钮的Ajax请求时一次点击两次提交的解决方法

    在使用JavaScript的Ajax请求时,如果在Ajax请求完成后没有阻止按钮的默认行为,即表单提交,就会发生“一次点击两次提交”的情况。下面详细探讨两种常用的解决办法。 ### 解决方案一:更改按钮的type属性 第一种...

    asp.net 页面防止重复提交

    然而,这种方法并不能完全防止所有情况下的重复提交,因为某些用户可能使用浏览器的刷新功能或者在网络延迟后多次点击。 ASP.NET MVC框架提供了一些内置机制来处理此问题。例如,可以使用`AntiForgeryToken`辅助...

    防止用户表单重复提交处理

    本示例提供了一种解决方案,包括在前端JavaScript和后端进行处理,以防止用户因网络延迟或误操作导致的多次提交。 前端处理(JavaScript): 1. **禁用提交按钮**:在用户点击提交按钮后,可以立即禁用该按钮,以...

    struts2防止表单重复提交--重定向

    如果服务器没有处理这些重复请求,那么相同的数据可能会被多次插入数据库,导致错误。 Struts2的解决方案之一是利用Action的Result类型,尤其是`redirect`和`redirectAction`。这两种结果类型都可以在处理完表单后...

    struts2 防止表单重复提交的例子

    Struts2框架提供了一种解决方案,即使用Token机制来防止表单的重复提交。以下是对这个主题的详细说明: 1. **表单重复提交问题**:当用户在提交表单时,由于网络延迟或用户误操作,可能会导致同一个表单被多次提交...

    几种防止表单重复提交的方法

    几种防止表单重复提交的方法 禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。 我之前的文章曾说...

    struts2中token限制表单多次提交

    在开发Web应用时,防止表单的多次提交是一个常见的需求,这可能导致数据重复或者逻辑错误。Struts2提供了Token插件来解决这个问题,确保每个表单提交只能被执行一次。下面将详细阐述Struts2中Token机制的工作原理、...

    [Jsp]防止页面表单重复提交的解决方法

    二、防止表单重复提交的方法 1. **使用JavaScript禁用提交按钮** 在表单提交时,可以使用JavaScript来禁用提交按钮,以防止用户连续点击。例如: ```javascript function disableSubmit() { document....

    sturts2防止表单的重复提交 token

    当用户填写并提交一个表单后,如果网络延迟或者用户误操作,可能会导致同一份表单数据被多次提交。这对于诸如转账、下单等业务来说,可能会带来严重后果。 Struts2的Token机制主要包含以下几个步骤: 1. **生成...

Global site tag (gtag.js) - Google Analytics