首页 > Web开发 > 详细

AJAX 的 Ajax返回数据之前的loading等待效果(gif效果等)

时间:2019-05-21 16:53:08      阅读:162      评论:0      收藏:0      [点我收藏+]

首先,我们通过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效果等)

原文:https://www.cnblogs.com/aidenzdly/p/10900400.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!