解決layui layer.load() Ajax提交時,只在結束閃一下


因為后台處理事務一般要一點時間,所以前台會用個Loading愛的魔力轉圈圈提高用戶體驗。

一般這種情況,大家常規操作就是在Ajax前加上load,ajax的success或者complete中close它即可。

最近寫了個Bug,就是圈圈不轉,只在結束時閃一下。找了半天……發現是自己弱智了。

解決辦法     Ajax設置為異步請求!!!async : true,
理解起來也很簡單,設置為同步時,前台會卡死一切進度,直到后台返回數據,這時設置的load也被卡死了,直到數據返回的時候才釋放,所以開啟和結束就在一瞬間。就會閃一下。

如果后台處理時間很短,那么同步異步基本沒區別,反正就是秒男一瞬間。時間長了大家就要注意一下了。完整代碼如下

          $("#query").click(function(){
            var query_index = $("#query_index").val();
            var query_index_data = {"query_index": query_index};
            //loading層
            var layer_index = layer.load(1, {
                  shade: [0.1,'#fff'] //0.1透明度的白色背景
            });

            //如果是默認值,點擊查詢按鈕,就直接刷新頁面
            if (query_index == "") {
                reloadPage();
            } else {

                $.ajax({
                    type:'POST',
                    async : true, //必須設置為false,才能實現data全局變量賦值
                    url:'{{url_for("get_data_by_index")}}',
                    data:JSON.stringify(query_index_data),
                    contentType:'application/json; charset=UTF-8', //指定傳遞給服務器的是Json格式數據
                    dataType:'json',
                    success:function(data){
                        if (data["data_details"].length != 0) {
                          //關閉layer
                          layer.close(layer_index);
                          
                          toastr.success(last_time+' 的健康度評分查詢成功!');

                        } else {
                          toastr.warning(last_time+' 的健康度評分查詢數據為空!');
                        }
                    },
                    error:function(e){
                        toastr.error('查詢失敗!');
                    }
                });

              }
           

          });

 參考:https://blog.csdn.net/qq_36752486/article/details/102956154


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM