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 相关文章推荐
javascript 日历提醒系统( 兼容所有浏览器 )
Apr 07 Javascript
分享几个超级震憾的图片特效
Jan 08 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
Feb 03 Javascript
javascript读写json示例
Apr 11 Javascript
node.js中的buffer.toJSON方法使用说明
Dec 14 Javascript
jquery实现两个图片渐变切换效果的方法
Jun 25 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
Dec 09 Javascript
Node.js静态文件服务器改进版
Jan 10 Javascript
利用css+原生js制作简单的钟表
Apr 07 Javascript
JS简单获取当前年月日星期的方法示例
Feb 07 Javascript
node.js通过axios实现网络请求的方法
Mar 05 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获取本周开始日期和结束日期的方法
2015/03/09 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
JavaScript中的私有成员
2006/09/18 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
Angular的$http与$location
2016/12/26 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
微信小程序自定义组件
2017/08/16 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python使用sorted排序的方法小结
2017/07/28 Python
学Python 3的理由和必要性
2019/11/19 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
HTML5新标签兼容——> 的两种方法
2018/09/12 HTML / CSS
给客户的道歉信
2014/01/13 职场文书
奶茶店创业计划书范文
2014/01/17 职场文书
技能比武方案
2014/05/21 职场文书
小班教师个人总结
2015/02/05 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书