首页 > 技术文章 > layui之初始化加分页重复请求问题解决

studyshufei 2018-02-07 18:39 原文

layui框架中的page困扰我很久,一个页面初始化后并且分页,导致初始化渲染请求一次,分页再请求了一次,一个接口就重复请求了2次,通过不停的分析和测试,最终解决了这个问题。

基于JQ的ajax二次封装的baseJqAjax:

 

 1 //基于JQuery的baseJqAjax
 2 function baseJqAjax ( options , error , success ) {
 3 
 4     options = options === undefined ? {} : options;
 5 
 6     var type = options.type === undefined ? 'post' : options.type;
 7 
 8     var async =options.async === undefined ? true : options.async;
 9 
10     var url = options.url === undefined ? '' : options.url;
11 
12     var data = options.data === undefined ? {} : options.data;
13 
14     var dataType =options.dataType === undefined ? 'json' : options.dataType;
15 
16     $.ajax({
17 
18         type: type,
19 
20         async: async,
21 
22         url: url,
23 
24         data: data,
25 
26         dataType: dataType,
27 
28         error: function(err) { error&&error(err); },
29 
30         success: function(result) { success&&success(result); }
31 
32     });
33 
34 }
35 /*使用方法有两种*/
36 
37 //第一种逻辑较多的选择  其他参数不设置使用默认参数
38 
39 baseJqAjax({url:url,data:data},error,success);
40 
41 function error(err){
42 
43     //请求失败执行的代码
44 }
45 
46 function success(result){
47     
48     //请求成功后执行的代码
49 }
50 
51 //第二种适合业务逻辑较少 其他参数不设置使用默认参数
52 //
53 baseJqAjax({url:url,data:data},function error(err){
54 
55     //请求失败执行的代码
56     
57 },function success(result){
58 
59     //请求成功后执行的代码
60     
61 });

 

 

 

项目中某个页面的初始化分页并且可以搜索功能:

 1 //init和page 里的接口都是同一个
 2 function init(){
 3 
 4     baseJqAjax({url:url,data:data},function error(err){
 5 
 6         //请求失败执行的代码
 7 
 8     },function success(result){
 9 
10         //请求成功后执行的代码
11         //成功请求到数据result
12         var data=result.data;
13         var page=result.count;
14         page(data,page);
15     });
16 }
17 
18 function page(data,page){
19 
20     layui.use('laypage', function(){
21 
22         var laypage = layui.laypage;
23 
24         laypage.render({
25 
26             elem: 'free',//注意,这里的 test1 是 ID,不用加 # 号
27 
28             count: page,
29 
30             groups:2, //数据总数,从服务端得到
31 
32             limit:2,    //每页的条数在这里设置
33 
34             jump: function(data, first){
35 
36                 //page
37 
38                 if(!first){
39 
40                    baseJqAjax({url:url,data:data},error,success);
41 
42                     function error(err){
43                         //分页请求失败执行的代码
44                     }
45 
46                     function success(result){
47                         //分页请求成功后执行的代码
48                     }
49                 } else {
50 
51                     //init
52 
53                      var html='';
54 
55                     for(var i=0;i<data.length;i++){
56 
57                         html += '<li>'+ data[i].parkingLotName + '</li>';
58 
59                     }
60 
61                     $('#ul').html(html);
62 
63                 }
64             }
65         });
66     });
67 }

 

如有疑问,欢迎留言。

推荐阅读