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 相关文章推荐
基于jquery的图片幻灯展示源码
Jul 15 Javascript
javascript实现简单的Map示例介绍
Dec 23 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
May 29 Javascript
JS实现文字放大效果的方法
Mar 03 Javascript
JS动态修改iframe内嵌网页地址的方法
Apr 01 Javascript
JavaScript获取IP获取的是IPV6 如何校验
Jun 12 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
Aug 17 Javascript
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
JS函数动态传递参数的方法分析【基于arguments对象】
Jun 05 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 Javascript
Canvas跟随鼠标炫彩小球的实现
Apr 11 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
php实现session共享的实例方法
2019/09/19 PHP
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
Vue表单实例代码
2016/09/05 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
Python中分数的相关使用教程
2015/03/30 Python
python实现class对象转换成json/字典的方法
2016/03/11 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
Django model update的多种用法介绍
2020/03/28 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
香港礼品网站:GiftU eshop
2017/09/01 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
答谢会策划方案
2014/05/12 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
国情备忘录观后感
2015/06/04 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
教师反邪教心得体会
2016/01/15 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技