ajax用beforeSend自定义请求过程中客户端事件,提高用户体验
本文为博主原创,未经允许不得转载:
在应用ajax的过程中,当我们再前台提交请求的时候,如果服务端响应事件比较长,就会导致需要等很长时间在前台才能接受到服务端返回的
响应结果,往往会导致用户重复点击按钮,进行重复请求,如何可以避免这种情况发生,ajax提供了一个beforeSend属性,用这个既可以避免这种
情况发生。
用这个属性可以定义客户端向服务端请求过程中的事件,比如在请求过程中禁用请求按钮的属性,或定义请求加载状态等,
实现的代码如下:
function exportData(){
$.ajax({
type: "post",
cache: false,
async: true,
data: {
"name":$("#cameraName").val(),
"createTime":$("#createTime").val(),
"lastTime":$("#lastTime").val()
},
beforeSend: function () {
//此处定义并调用jquery-confirm的加载层事件
obj = jqconfirmTip('正在响应请求,请稍候...','fa fa-spinner fa-spin');
return true;
},
dataType: 'json',
url: "exportDetail?rnd=" + Math.random(),
success: function (a) {
if (a.resultCode == "SUCCESS") {
obj.close(); //关闭加载层
} else {
alert("导出失败");
obj.close();
}
},
error: function (msg) {
alert("请求失败");
obj.close();
}
});
}
//jquery-confirm插件,需要引入jquery-confirm.js (该方法可以直接调用)
function jqconfirmTip(title, icon) {
var obj = $.confirm({
backgroundDismiss : false,
content : false,
icon : icon,
title : title,
// autoClose : 'confirm|10000',
animation : 'scaleY',
closeIcon : false,
columnClass : 'col-md-4 col-md-offset-4',// col-md-6 col-md-offset-3
confirmButton : false,
cancelButton : false,
theme : 'black'
});
return obj;
}
效果如图:

上述例子中的应用根据服务端返回的结果类型,去关闭该加载层。
同时ajax也提供了请求完成后回调函数 (请求成功或失败之后均调用)的属性,该属性为:complete,可在此处定义回调事件,关闭或停止beforeSend处定义的事件
示例如下:
$.ajax({
type: "post",
contentType: "application/json",
url: "/userList",
beforeSend: function () {
$("loading").show();
},
success: function (data) {
if (data == "Success") {
// ...
}
},
complete: function () {
$("loading").hide();
},
error: function (data) {
$("loading").hide();
}
});
。
ajax用beforeSend自定义请求过程中客户端事件,提高用户体验的更多相关文章
- springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。
springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeEx ...
- JS请求服务器,并返回信息,请求过程中不需要跳转页面
js请求服务器,并返回信息,请求过程中不需要跳转页面 这个可以通过jQuery框架轻松实现,jQuery中包含多种ajax的请求方式,详细可以参考下对应 的API. 你上面定义的按钮类型是submit ...
- 巧用Ajax的beforeSend 提高用户体验--防止重复数据
巧用Ajax的beforeSend 提高用户体验 jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作.具体可参考jQ ...
- zepto源码研究 - ajax.js(请求过程中的各个事件分析)
简要:ajax请求具有能够触发各类事件的功能,包括:触发全局事件,请求发送前事件,请求开始事件,请求结束事件等等,贯穿整个ajax请求过程,这是非常有用的,我们可以利用这些事件来做一些非常有意思的事情 ...
- Ajax请求过程中显示“进度”的简单实现
Ajax在Web应用中使用得越来越频繁.在进行Ajax调用过程中一般都具有这样的做法:显示一个GIF图片动画表明后台正在工作,同时阻止用户操作本页面(比如Ajax请求通过某个按钮触发,用户不能频繁点击 ...
- 统一处理jquery ajax请求过程中的异常错误信息的机制
当jQuery ajax向服务器发送请求,服务器发生异常,比如:400.403.404.500等异常,服务器将异常响应给客户端,此时的ajax可以获取异常信息并进行处理,但此时我们一般是跳转到与异常编 ...
- ajax请求过程中下载文件在火狐下的兼容问题
项目中碰到的问题,记录如下. 需求很简单,点击一个文件链接下载该文件,同时向后台发送请求.需求很常见,用户点击下载后通常要进行下载量的统计,统计的话可以利用 script标签 或者 img标签(图片p ...
- 使用zuul实现验证自定义请求头中的token
路由:她会把外部所有对请求转发到具体的微服务实例上,是实现外部访问同一接口的基础 过滤: 就是权限的检查, 判断当前的请求是否有权限区访问那些服务集群 搭建后台网关: 导入eureka - clien ...
- filter 请求过程中过滤链组装和调用解析
自定义filter需要先下载依赖包 首先过滤链不是责任链的设计模式,因为一个request可以被链条上的多个filter处理.但是,对于责任链来说,一个request只能被链条中的一个handler处 ...
随机推荐
- requests库的get请求,带有cookies
(一)如何带cookies请求 方法一:headers中带cookies #coding:utf-8 import requests import re # 构建url url = 'http://w ...
- InnoSQL/MySQL并行复制的实现与配置
InnoSQL/MySQL并行复制的实现与配置 http://www.innomysql.net/article/6276.html 并行复制之前的解决方案 InnoSQL在5.5.30-v4版本中支 ...
- 对innodb_flush_log_at_commit参数的写日志和刷盘行为进行图解
对innodb_flush_log_at_commit参数的写日志和刷盘行为进行图解
- 【剑指offer】跳台阶
一.题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 二.思路: 同斐波那契数列. 三.代码:
- vue学习六之vuex
由于状态零散地分布在许多组件和组件之间的交互中,大型应用复杂度也经常逐渐增长.为了解决这个问题,Vue 提供 vuex. 什么是Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 ...
- word自动导入目录
1:如果在编写word时,有给各章添加标题,可以使用word的目录生成功能,如图:
- [py]py常用模块小结
- python md5校验: https://blog.csdn.net/linda1000/article/details/17581035 import hashlib hashlib.md5( ...
- windows7触屏操作API
每当用户触摸触敏式 Windows 7 设备时,Windows 7 多点触控平台都会向您的应用程序发送手势消息 WM_GESTURE.这是现成的免费行为,如果您希望停止接收此类消息,则需要选择退出. ...
- 机器学习理论基础学习13--- 隐马尔科夫模型 (HMM)
隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的.隐含马尔可夫模型一直被认为是解决大多数自然语言处理问题最为 ...
- asp.net本地读取excel正确。但在iis服务器上就报错 未在本地计算机上注册“Microsoft.ACE.OleDb.12.0”提供程序
本地vs2010可以上传ecxel文件.并读取数据,但部署到本地IIS.并访问.则提示: 未在本地计算机上注册“Microsoft.ACE.OleDb.12.0”提供程序 首先:确保安装了Micros ...