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 手动给表增加数据的小例子
Jul 10 Javascript
Js为表单动态添加节点内容的方法
Feb 10 Javascript
jQuery动态背景图片效果实现方法
Jul 03 Javascript
Angularjs实现mvvm式的选项卡示例代码
Sep 08 Javascript
Bootstrap栅格系统的使用和理解2
Dec 14 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
Dec 20 Javascript
JS实现给json数组动态赋值的方法示例
Mar 19 Javascript
JS实现的tab页切换效果完整示例
Dec 18 Javascript
在layui框架中select下拉框监听更改事件的例子
Sep 20 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
Apr 15 Javascript
vue+elementUI实现简单日历功能
Sep 24 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 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 addslashes和mysql_real_escape_string
2010/01/24 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
超级实用的7个PHP代码片段分享
2012/01/05 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
[原创]php使用curl判断网页404(不存在)的方法
2016/06/23 PHP
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
开始着手第一个Django项目
2015/07/15 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
python plotly绘制直方图实例详解
2019/07/22 Python
Python try except else使用详解
2021/01/12 Python
《最大的麦穗》教学反思
2014/04/17 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
精神病医院见习报告
2014/11/03 职场文书
给老婆的检讨书
2015/01/27 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
MySQL空间数据存储及函数
2021/09/25 MySQL
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server