JS Ajax请求如何防止重复提交


Posted in Javascript onJune 13, 2016

好长时间没写js代码了刚好遇到这样的问题。我们系统多数表单没有做防止重复提交的。

由于不想在后端这边处理,因为假如由后端处理的话,就需要在页面加载的时候给出一次性的token值,加大了开发的工作量不说,还容易忘记做这个,同时,ajax也不好处理,需要提交失败的话同时返回新的token值。

所以我想在,js这边动手。其实以前和前端提过,久久不见动静,就只好弄块砖丢出去了。思路是,覆盖掉$.ajax,在这里面处理掉防止重复提交的问题,而前端的业务开发不受影响,不改代码,无感知。

我想架构的目的之一,就在于简化业务开发,屏蔽掉业务无关的细节,让一线开发安心写业务吧。

代码如下:

/**
* Created by xiayongsheng on 2016/6/12.
*/
;(function($){
var ajax = $.ajax;
// 用于存储ajax的请求
var ajaxState = {};
var kinhomAjax = function () {
var args = Array.prototype.slice.call(arguments, 0);
// url data 一致,
// 应该将 url取出,data按键值排序,后将值拼接在一起,进行sha1得到的值作为指纹
// 累先用 url作为指纹吧
var hash = typeof args[0] === 'string'?args[0]:args[0].url;
if (typeof ajaxState[hash] !== 'undefined') {
if (ajaxState[hash] > 3) {
alert('请不要重复提交,请求正在处理中');
}
++ajaxState[hash];
return $.Deferred();
}
ajaxState[hash] = 1;
var def = ajax.apply($,args);
def.done(function () {
delete ajaxState[hash];
});
return def;
};
$.ajax = kinhomAjax;
})(jQuery);

以上所述是小编给大家介绍的JS Ajax请求如何防止重复提交的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js中文逗号转英文实现
Feb 11 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
Jun 06 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
Winform客户端向web地址传参接收参数的方法
May 17 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
Nov 25 Javascript
jQuery插件扩展操作入门示例
Jan 16 Javascript
JS实现字符串中去除指定子字符串方法分析
May 17 Javascript
jQuery实现常见的隐藏与展示列表效果示例
Jun 04 jQuery
详解vue-cli脚手架中webpack配置方法
Aug 22 Javascript
vue-cli3 配置开发与测试环境详解
May 17 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
Jun 11 Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
JavaScript判断微信浏览器实例代码
Jun 13 #Javascript
JavaScript判断是否是微信浏览器
Jun 13 #Javascript
JavaScript_object基础入门(必看篇)
Jun 13 #Javascript
js 连续赋值的简单实现
Jun 13 #Javascript
全面解析Bootstrap中Carousel轮播的使用方法
Jun 13 #Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 #Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 #Javascript
You might like
PHP开发大型项目的一点经验
2006/10/09 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
2014/01/06 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
python strip()函数 介绍
2013/05/24 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
自行车租赁公司创业计划书
2014/01/28 职场文书
售后求职信范文
2014/03/15 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
快递员岗位职责
2014/09/12 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python
一文搞懂Python Sklearn库使用
2021/08/23 Python