ajax返回数据之前的loading等待

首先,我们通过ajax请求,向后台传递参数,然后后台经过一系列的运算之后向前台返还数据,我希望在等待数据成功返还之前可以展示一个loading.gif图

不废话,在页面上执行点击事件(<a sceneid="@scene.ID" href="javascript:void(0)" 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();
            }
        });
    }

ajax

后台页面就不写了,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能够完整的显示,免得很突兀。

注:此篇随笔只供参考使用,而且也有很多小瑕疵,最主要的不是代码,逻辑才是最重要的。

时间: 2024-08-25 10:43:37

ajax返回数据之前的loading等待的相关文章

jquery ui autocomplete ajax返回数据自定义显示

1.body里面的内容 <input type="text" class="inputTxt" id="txtJigou" autocomplete="off"/> 2.引入jquery.ui.min.js和他的样式 3.js代码如下<script type="text/javascript"> $(function(){ $("#txtJigou").autoc

Jquery 等待ajax返回数据loading控件ShowLoading组件

1.意义 开发项目中,前台的页面要发请求到服务器,服务器响应请求返回数据到前台,这段时间,有可能因为返回的数据量较大导致前台页面出现短暂性的等待,此时如果用户因不知情而乱点击有可能造成逻辑混乱,所以此时需要在加载数据中将前台进行提示在加载数据中,利用jquery的遮罩组件可以完成这个功能需求. 2.实现步骤 (1).下载 showLoading.css    jquery.showLoading.min.js  两个文件. (2).在jsp中引入这两个文件 <link href="styl

ajax返回数据解析总结

ajax即异步 JavaScript 和 XML(Asynchronous JavaScript and XML). 简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示. 使用 AJAX 的应用程序案例:谷歌地图.腾讯微博.优酷视频.人人网等等. 通过 jQuery AJAX 方法,您能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本.HTML.XML 或 JSON - 同时您能够把这些外部数据直接载入网页的被选元素中. 前面已经提过aja

小笔记(一):ajax传递数组及将ajax返回数据赋值

当使用ajax传递数据时,有可能传递多个数据,这是使用以下方法传递数据就会显得数据过多且混杂 $.ajax({ type:'post', url:url, data:{data:data,content1:content1,content2:content2,content3:content3,...........}, success:function(data){ alert(data) } }); 这时我们就可以先在传递数据之前,将数据封装在数组中,但是要注意,定义数组的时候要用arr={

jquery中获取ajax返回数据的方法

//此处需要注意的是要想获取ajax返回的值时这个ajax请求必须是同步的,否则获取不到返回值 function getPageTotalAndDataTotal(page) { //设置一个变量用于接收ajax返回的值 var pageTotal = 0; // 获取页数与数据总数 $.ajax({ url : "你的url地址", type : "post", async : false, data : {}, dataType : "json&quo

Ajax返回数据却一直进入error(已经解决)

做asp.net项目  使用ajax $.ajax({ url: '../Music/Default2.aspx?Types=' + type + '&texts=' + text + '', type: 'GET', // data: '&texts=' + text + '',dataType: 'json', success: function (data) { console.log(data); } }); 都没有问题   返回数据,打印出data  结果 发现没有数据 去Net

struts通过Ajax返回数据时,例如对象类型,没有执行Ajax的回调函数

<result type="json"  name="success">                 <param name="includeProperties">msg.*,对象.*</param>                <!--  <param name="includeProperties">msg</param> -->      

Bootstrap分页插件ajax返回数据,工具类的编写

使用Bootstrap分页插件时,需要返回指定的参数,这样Bootstrap才能够识别 需要引入的css: <!-- boostrap table --> <link href="css/bootstrap-table.min.css" rel="stylesheet" /> 需要引入的js: 1 <!-- boostrap table --> 2 <script type="text/javascript&quo

ajax 返回数据 无法得到其属性的解决办法

当我们用ajax无法 得到其属性.正常情况下是: <script type="text/javascript">        function useAjax(sendUrl,name){ $.ajax({                type: "POST",                url: sendUrl,                data: { txtCode: $("#txtCode").val() },