AJAX 的 Ajax返回数据之前的loading等待效果(gif效果等)
首先,我们通过ajax请求,向后台传递参数,然后后台经过一系列的运算之后向前台返还数据,我希望在等待数据成功返还之前可以展示一个loading.gif图
不废话,在页面上执行点击事件(<a sceneid="@scene.ID" href="javascript:void(0)" rel="external nofollow" onclick="build(this)">生成</a>)
function build(sender) {
// 此处是对全局加载;如果对局部控价加载,可修改jqSender如:
// var jqSender = $('#控件id');最后complete函数内remove之后,在将删除的控价显示,不然控件就不显示了--> jqSender.show(); 完美!
var jqSender = $(sender);
var sceneid = jqSender.attr('sceneid');
$.ajax({
type: 'post',
url: "Follow/UpdateUrl",
data: { sceneid: sceneid },
beforeSend: function () {
jqSender.hide().after('<img id="load" src="/images/load.gif" />');
},
success: function (data) {
//根据id和class获取td标签
$('tbody tr[id=' + sceneid + '] td.wxurl-col').html(data.QRUrl);
$('tbody tr[id=' + sceneid + '] td.localkey-col').html(data.LocalKey);
//隐藏生成按钮,插入图片
var localkey = data.LocalKey;
jqSender.after('<img src="/image/' + localkey + '" />');
},
complete: function () {
$('#load').remove();
}
});
}
最主要的一句就是:
beforeSend: function () { jqSender.hide().after('<img id="load" src="/images/load.gif" />'); },
总结:
这要考虑到ajax异步请求的特点,当ajax执行到url的时候,会有一个线程跳转到后台去执行,
浏览器会增加一个线程(不知道这么说标不标准)继续执行后面的程序,到success: function (data)暂停等待 后台成功的返回数据;
这样,before里面插入的图片就相当于是一个loading,当数据成功返回后,把before里面的图片移除,写在complete: function ()语句中。
我后台的处理流程大概是这样的:首先一个http GET请求,获取微信公众平台的access_token,然后再用http POST请求,获取换取微信二维码的ticket
然后再用WebClient方法,把请求到的二维码下载到本地存储,然后就是数据库的增删查改,展示二维码到网页上。
这么一大段才让loading有足够的时间展示出来,如果时间比较短,可以网上查查看有没有定义一个时间,让loading能够完整的显示,免得很突兀。
感谢w3school~
AJAX 的 Ajax返回数据之前的loading等待效果(gif效果等)的更多相关文章
- ajax返回数据之前的loading等待
首先,我们通过ajax请求,向后台传递参数,然后后台经过一系列的运算之后向前台返还数据,我希望在等待数据成功返还之前可以展示一个loading.gif图 不废话,在页面上执行点击事件(<a sc ...
- [转]IE9.0或者360下js(JavaScript、jQuery)不能正确执行(加载),按F12后执行正常;Firefox下ajax的success返回数据data(json、string)无法获取
兼容问题1: 页面的分享等插件加载不全,并无法点击. 兼容问题2: IE下页面选择器(#id..class.etc.)绑定click事件无法访问到,后台springmvc方法,也无法获取ajax的su ...
- 快捷标签和ajax、json返回数据
<if 判断条件>标签</if><import>标签可以链接外部的样式表,和js<import file="js.util.Array" ...
- EXTJS 资料 Ext.Ajax.request 获取返回数据
下面是一个登陆页面调用的EXTJS login function,通过 url: '/UI/HttpHandlerData/Login/Login.ashx',获取返回登陆账户和密码! Ext.onR ...
- ajax请求对返回数据data的处理
1,ajax请求会根据响应头的返回数据类型对返回的数据data变量进行不同的处理 $.get("data/user-permission-submit-" + ddo.manipu ...
- Ajax调用Conrtoller返回数据
前端ajax function doRefund(){ $.ajax({ type: "POST", catch: false, url: "@Url.Action(&q ...
- asp.net mvc 使用Ajax调用Action 返回数据【转】
使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js 脚本,根据版本不同大家自行选择. <script src=& ...
- php关于jquery ajax json不返回数据的问题
分析原因: 1.php端代码有错导致echo输出错误,导致ajax返回函数不执行 2.jquery版本原因 3.juqery前端script代码问题
- jQuery Ajax异步处理Json数据详解
先我们来看一个官方的实例使用 AJAX 请求来获得 JSON 数据,并输出结果: $("button").click(function(){ $.getJSON("dem ...
随机推荐
- C++ 回调函数简单示例
回调函数其实就是以函数指针做函数参数传递给另一个函数,在另一个函数执行的时候可以根据函数指针执行回调函数的代码.简单示例,便于理解,防止遗忘. #include <iostream> ty ...
- 让mybatis不再难懂(二)
上一篇文章写了mybatis的基本原理和配置文件的基本使用,这一篇写mybatis的使用,主要包括与sping集成.动态sql.还有mapper的xml文件一下复杂配置等.值得注意的是,导图17和18 ...
- Office 365 的安装方法
一.在线安装 进入网址 https://www.office.com/ 使用office账号登陆 1.点击右上角安装office应用,选择第二项 其他安装选项 2.选择安装语言 点击高级,选择安装版本 ...
- 线程同步Lock锁
Lock接口历史 java1.5版本之前只有synchronized一种锁,lock是java1.5版本之后提供的接口.lock接口与synchronized接口功能相同,但是需要手动获取锁和释放锁. ...
- H5页面如何引入vConsole
vConsole github地址vConsole 是腾讯开源的项目,这就简单的介绍一下使用 使用npm引入vconsole.min.js下载 vConsole 的最新版本.(不要直接下载 dev 分 ...
- tftpd64-SE使用
使用场景: 把windows下的文件写入到linux(嵌入式设备中): 下载地址: https://bitbucket.org/phjounin/tftpd64/wiki/Download%20Tft ...
- Rails (栈)
题目链接:https://vjudge.net/problem/UVA-514 题目大意: 有A,B,C三个火车停靠点,火车最初停在A站,给你一个序列,问你能不能通过中转站C到达B站,火车从A站进入到 ...
- iOS开发之多线程(NSThread、NSOperation、GCD)
整理一些多线程相关的知识. 并行 & 并发 1.并行:并行是相对于多核而言的,几个任务同时执行.2.并发:并发是相对于单核而言的,几个任务之间快速切换运行,看起来像是"同时" ...
- 千亿VR市场 将被国内厂商玩坏多少?
将被国内厂商玩坏多少?" title="千亿VR市场 将被国内厂商玩坏多少?"> 智能硬件行业在不断寻求新的突破口,当智能手机.平板.电视.家电等都司空见惯之后,能 ...
- 对javascript EventLoop事件循环机制不一样的理解
前置知识点: 浏览器原理,浏览器内核5种线程及协作,JS引擎单线程设计推荐阅读: 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 [FE]浏览器渲染引擎「内核」 js异步编程,Promise ...