Jquery中巧用Ajax的beforeSend方法


Posted in Javascript onJanuary 20, 2016

jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作。

$.ajax({
  beforeSend: function(){
   // Handle the beforeSend event
  },
  complete: function(){
   // Handle the complete event
  }
  // ......
});

防止重复数据
在实际项目开发中,提交表单时常常由于网络或者其原因,用户点击提交按钮误认为自己没有操作成功,进而会重复提交按钮操作次数,如果页面前端代码没有做一些相应的处理,通常会导致多条同样的数据插入数据库,导致脏数据的增加。要避免这种现象,在$.ajax请求中的beforeSend方法中把提交按钮禁用掉,等到Ajax请求执行完毕,在恢复按钮的可用状态。

举个例子:

// 提交表单数据到后台处理
$.ajax({
  type: "post",
  data: studentInfo,
  contentType: "application/json",
  url: "/Home/Submit",
  beforeSend: function () {
    // 禁用按钮防止重复提交
    $("#submit").attr({ disabled: "disabled" });
  },
  success: function (data) {
    if (data == "Success") {
      //清空输入框
      clearBox();
    }
  },
  complete: function () {
    $("#submit").removeAttr("disabled");
  },
  error: function (data) {
    console.info("error: " + data.responseText);
  }
});

模拟Toast效果
ajax请求服务器加载数据列表时提示loading(“加载中,请稍后...”),

$.ajax({
  type: "post",
  contentType: "application/json",
  url: "/Home/GetList",
  beforeSend: function () {
    $("loading").show();
  },
  success: function (data) {
    if (data == "Success") {
      // ...
    }
  },
  complete: function () {
    $("loading").hide();
  },
  error: function (data) {
    console.info("error: " + data.responseText);
  }
});

方法beforeSend,用于在向服务器发送请求前添加一些处理函数,希望通过这篇文章加深大家对beforeSend方法的学习认识。

Javascript 相关文章推荐
JQUERY实现左侧TIPS滑进滑出效果示例
Jun 27 Javascript
完美解决IE低版本不支持call与apply的问题
Dec 05 Javascript
js动态移动滚动条至底部示例代码
Apr 24 Javascript
JavaScript中实现异步编程模式的4种方法
Sep 24 Javascript
jQuery中animate动画第二次点击事件没反应
May 07 Javascript
js放大镜放大购物图片效果
Jan 18 Javascript
如何获取元素的最终background-color
Feb 06 Javascript
JS监控关闭浏览器操作的实例详解
Sep 12 Javascript
JavaScript 2018 中即将迎来的新功能
Sep 21 Javascript
vue axios请求频繁时取消上一次请求的方法
Nov 10 Javascript
ES6中Set和Map用法实例详解
Mar 02 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
Aug 06 Javascript
Javascript中神奇的this
Jan 20 #Javascript
javascript实现图片轮播效果
Jan 20 #Javascript
JS获取鼠标坐标位置实例分析
Jan 20 #Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 #Javascript
学习JavaScript设计模式之模板方法模式
Jan 20 #Javascript
高性能JavaScript循环语句和条件语句
Jan 20 #Javascript
详解Javascript模板引擎mustache.js
Jan 20 #Javascript
You might like
用PHP的ob_start();控制您的浏览器cache!
2006/11/25 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
jquery中ajax学习笔记3
2011/10/16 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
金融专业个人求职信范文
2013/11/28 职场文书
给老师的道歉信
2014/01/11 职场文书
《口技》教学反思
2014/02/21 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
男人帮观后感
2015/06/18 职场文书