$.ajax()——超时设置,增加 loading 提升体验
前端发送Ajax请求到服务器,服务器返回数据这一过程,因原因不同耗时长短也有差别,且这段时间内页面显示空白。如何优化这段时间内的交互体验,以及长时间内服务器仍未返回数据这一问题,是我们开发中不容忽视的重点。
常见的做法是:
1、设置超时时间,一旦时间超过设定值,便终止请求;
2、页面内容加载之前,手动增加一个 loading 层。
代码如下:
getAjax: function (method, apiUrl, options, callback) {
var xhr = $.ajax({
type: method,
url: apiUrl,
data: options,
timeout: 5000, // 设置超时时间
dataType: "json",
beforeSend: function (xhr) {
$.showLoading(); // 数据加载成功之前,使用loading组件
},
success: function(json) {
$.hideLoading(); // 成功后,隐藏loading组件
if(callback && callback instanceof Function === "true") {
callback(json);
}
},
error: function (textStatus) {
console.error(textStatus);
},
complete: function (XMLHttpRequest,status) {
if(status == 'timeout') {
xhr.abort(); // 超时后中断请求
$.alert("网络超时,请刷新", function () {
location.reload();
})
}
}
})
}
随机推荐
- 在Centos7下安装Python+Selenium+Firefox学习环境
Selenium 一自动化测试工具.它支持 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测 ...
- 理解ServletRequest和ServletResponse
博客地址:http://blog.51cto.com/lavasoft/275586
- ubuntu14.04环境下利用docker搭建solrCloud集群
在Ubuntu14.04操作系统的宿主机中,安装docker17.06.3,将宿主机的操作系统制作成docker基础镜像,之后使用自制的基础镜像在docker中启动3个容器,分配固定IP,再在3个容器 ...
- SOCKET, TCP/UDP, HTTP, FTP 浅析
SOCKET, TCP/UDP, HTTP, FTP (一)TCP/UDP,SOCKET,HTTP,FTP简析 TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层: 网络层:IP协议. ...
- Linq操作DataTable
IEnumerable<DataRow> q = from dr in dt.AsEnumerable() where dr.Field& ...
- linux 修改oracle字符集
问题描述:同事在Linux下安装的Oracle,默认的字符集没有修改,使用的是WE8ISO8859P1,不能够支持中文, 问题表现为,客户端录入的中文数据可以显示,提交之后再查询出来后中文会显示为?? ...
- jvm编译环境搭建 win Vc篇
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- MVC5数据库迁移命令!
首先数据库迁移在上下文里设置要设置成为CreateDatabaseIfNotExists, 然后在Nuget控制平台输入命令 在“程序包管理器控制台”窗口中输入:Enable-Migrations ...
- 475. Heaters
static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...
- asp.net mvc 3高级编程文摘
第一章 入门 M:模型,组类,描述了要处理的数据以及修改和操作数据的业务规则 V:视图,定义应用程序用户界面的显示方式 C:控制器,一组类,用于处理来自用户,整个应用程序流以及特定应用程序逻辑的通信 ...