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 相关文章推荐
在JavaScript里嵌入大量字符串常量的实现方法
Jul 07 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
Sep 23 Javascript
JavaScript中的console.dir()函数介绍
Dec 29 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
Dec 29 Javascript
Flash图片上传组件 swfupload使用指南
Mar 14 Javascript
js结合正则实现国内手机号段校验
Jun 19 Javascript
javascript中的altKey 和 Event属性大全
Nov 06 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
jsonp跨域获取数据的基础教程
Jul 01 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
Jun 17 Javascript
Vue实现导航栏菜单
Aug 19 Javascript
js作用域及作用域链工作引擎
Jul 07 Javascript
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调用微信接口上传永久素材
2017/04/11 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
JavaScript 实现??打印?理
2007/04/28 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
python实现linux下抓包并存库功能
2018/07/18 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
美国Max仓库:Max Warehouse
2020/05/31 全球购物
小学生期末评语
2014/04/21 职场文书
社区服务标语
2014/07/01 职场文书
培训班开班主持词
2015/07/02 职场文书
Python实现机器学习算法的分类
2021/06/03 Python