Ajax返回数据之前的loading等待效果
前端  /  管理员 发布于 4年前   271
首先,我们通过ajax请求,向后台传递参数,然后后台经过一系列的运算之后向前台返还数据,我希望在等待数据成功返还之前可以展示一个loading.gif图
不废话,在页面上执行点击事件(<a sceneid="@scene.ID" href="" rel="external nofollow" onclick="build(this)">生成</a>
)
调用下面方法:
function build(sender) { 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(); } }); }
后台页面就不写了,url中配置了传递到后台的路径,最主要的就是
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能够完整的显示,免得很突兀。
总结
以上所述是小编给大家介绍的Ajax返回数据之前的loading等待效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号