在页面的POST提交请求时,如果不做特殊处理,用户刷新一次页面,就会导致重复提交一次。
在Ajax里面,这个问题也是尤为严重的,用户只要重复点击那个按钮一次,就会重复提交一次。很多人会说,加屏蔽层或者将按钮灰掉。好,这个对付普通用户是可以的,如果是恶意用户呢,自己构造请求,用程序来反复提交,会搞死人的。
通常,方法执行需要时间,一般比较短,但是某些和WebService打交道以及和读写文件打交道的方法,都是需要很长时间的。恰好,在这个方法里,有重要的逻辑。结果会很惨,用户不停地通过Ajax来调用这个方法,结果造成严重后果,大量重复或错误数据被保存到数据库。
举例如下,有个订单操作界面,用户有个查询按钮,用来查询订单的状态,如果是“失败”订单的话,会返还用户之前的“扣款”,并将订单更新为“已返还用户扣款”的状态。
程序片段如下:
if ("未返还用户扣款" && "失败订单") {
// 返还用户扣款,并更新数据库记录为“已返还用户扣款”
}
假设if内的逻辑是调用WebService操作的,并且很耗时,例如需要20秒。恰好,这个界面操作使用Ajax做的,并且没有加屏蔽层。这个用户的手还比较痒痒,不停地点击“查询”按钮来确定订单状态。
这下惨了,这个方法会被执行N次,并且会返还用户扣款N次。结果是用户赚大了,网站赔大了。
为什么会这样?因为if内的逻辑需要20秒才能执行完,在20秒之内,用户的点击都会响应,并正确进入if块(因为订单还没有被更新为“已返还用户扣款”的状态)。
在这类响应时间较长的方法,如果很重要,并且存在重复执行的可能。如果if块内的逻辑没有很好的控制办法的话。就必须加入时间控制,确保在20秒内,此方法不接收新的请求。
分享到:
相关推荐
### AJAX 防止按钮重复提交 在Web应用开发中,为了避免用户因网络延迟或误操作而导致的数据重复提交问题,通常会采取一定的措施来确保数据的一致性和完整性。本篇文章将详细探讨如何通过AJAX技术结合JavaScript来...
还可以考虑使用AJAX异步提交,通过JavaScript控制整个提交过程,从而更好地控制和防止重复提交。在AJAX请求中,可以设置一个全局变量来标记请求状态,避免并发请求。 最后,前端验证和反馈也能帮助减少重复提交。...
在Web开发中,防止Ajax重复提交是一个重要的问题,因为这能有效避免服务器处理多次相同请求,从而减轻服务器负载,防止数据异常。jQuery提供了一种优雅的方式来处理这个问题,通过使用`$.ajaxPrefilter`方法,我们...
下面给大家带来两种关于jquery 的ajax防止重复提交的解决方法,具体介绍如下所示: 1、第一种,对于onclick事件触发的的ajax 可以采用如下方法: 即在beforeSend中使点击按钮不可用,ajax结果返回后置为可用 $....
在使用Layui设计表单时,经常会遇到表单提交后页面刷新导致的重复提交问题。为了解决这个问题,开发者需要确保表单只提交一次,防止不必要的数据重复处理或者服务器的重复计算。下面详细解释几种防止Layui表单重复...
在IT行业中,尤其是在Web开发领域,防止用户多次重复提交数据是一项重要的任务,这可以避免数据库出现冗余数据,保持系统稳定。"修改禁止多次重复提交"这个话题涉及到前端交互、后端处理以及数据库操作等多个层面。...
以上就是关于JavaScript表单验证对象控件以及使用Ajax进行重复项验证和数据提交的基础知识。在实际应用中,你可能还需要考虑错误处理、异步操作的用户体验改进(如加载指示器)以及安全问题,如防止XSS和CSRF攻击。...
在Web开发中,表单重复提交是一个常见的问题,可能导致数据的冗余或错误。JavaScript作为客户端脚本语言,可以通过多种策略来防止用户意外或恶意地多次提交表单。以下是一些关键的知识点: 1. **禁用提交按钮**:最...
当我们结合PHP和Ajax技术来实现远程加载并防止重复提交时,我们可以创建一个高效且用户体验良好的系统。下面将详细介绍这个主题。 首先,PHP是服务器端的一种脚本语言,常用于构建动态网页。Ajax(Asynchronous ...
### AJAX判断商品是否重复知识点详解 #### 一、概述 在现代Web开发中,异步JavaScript与XML(AJAX)技术被广泛应用于实现网页的局部刷新功能,从而提高用户体验。本篇文章将详细介绍如何利用AJAX结合PHP后端来判断...
这是因为如果未正确处理,一个简单的按钮点击可能会导致Ajax请求和表单提交同时发生,造成不期望的重复提交问题。 当使用HTML表单提交数据时,点击类型为submit的按钮默认会触发表单的提交。在使用JavaScript的Ajax...
在IT行业中,尤其是在前端开发领域,防止用户重复提交是一项重要的任务,这有助于避免因网络延迟或用户误操作导致的数据混乱。Element-UI,一个流行的Vue.js组件库,提供了多种方式来处理这个问题。以下是如何在使用...
本文将详细介绍一个使用AJAX进行表单提交的示例代码,并重点讲解如何通过设置全局变量来避免用户连续点击导致的数据重复提交问题。该示例包含了一个名为`reviewajax`的函数,用于处理表单数据的异步提交。此外,还...
文档提供了一个防止Ajax重复提交的示例方法,通过修改原生的$.ajax方法来实现。具体方法是使用一个闭包封装原有的$.ajax方法,并在封装函数中实现去重逻辑。这个封装函数被命名为kinhomAjax。 5. 封装函数实现细节...
防止页面刷新重复提交是 Web 开发中非常重要的问题,为了防止这种问题,我们可以使用验证码方法、Token 方法、AJAX 方法等。验证码方法是最简单、最effective 的方法,Token 方法可以防止 CSRF 攻击,AJAX 方法可以...
传统的表单提交方式通常涉及整个页面的刷新,这对于简单的验证操作来说显得过于繁琐且用户体验不佳。使用jQuery结合AJAX技术可以实现无刷新的用户名验证,极大地提升了用户体验。 #### 二、jQuery AJAX简介 jQuery...
- 使用异步处理:使用Ajax提交表单,可以避免页面整体刷新,减少重复提交的机会。 - 提供明确的用户反馈:当表单成功提交后,显示清晰的反馈信息,告知用户操作已完成,防止他们因不清楚状态而多次尝试。 综上所...
【系统设计说明书——防止AJAX重复提交方案】 1 引言 1.1 编写目的 本设计说明书旨在详细阐述如何通过AJAX技术来防止用户在Web应用中进行重复提交,以确保数据的一致性和系统稳定性。重复提交可能会导致数据库中的...
通过前端禁用提交按钮、使用Ajax异步请求,以及后端的Token验证、幂等性设计和事务控制,我们可以有效防止重复提交,确保系统数据的一致性和稳定性。在实际应用中,应根据项目需求和具体技术栈选择合适的方法。