ajax从后台获取全部的数据之后,现在分次显示在页面上。

使用ajax从后台获取到全部数据,要在页面分次显示, 之前是不断的调用ajax来分次显示,现在是在页面上做分次显示。

                  $.ajax({
                    type: "POST",
                    url: "./ajaxAutoComplete.do",
                    dataType:"json",
                    data: "method=getCityList&countryCode="+countryCode+"&offset="+offsetDate+"&isPage=false",
                    success: function(g_cityList){
                        var sCityTable = [];
                        var cityCodeArr = cityCodes.split(",");
                            $("#cityBtn").select({
                                dataType    : "cityName",
                                dataArray   : g_cityList,
                                dataCode    : cityCodeArr,
                                checkboxText:$("#cityCode"),
                            });
                        
                    }
                });    
                

success返回的是一个g_cityList数组,这个数据有几千条,怎么每次显示,比如一次显示1000条
这个数据生成的页面是用js写的,后台返回的数据直接导入到js中生成页面。
后端分页我已经完成,但是上司要求在前端分别。。

阅读 5.4k
5 个回答

为什么不做成分页的形式?一次性获取全部的数据,然后前端在进行数据类似分页的处理,这种做法其实是比较不好的。

这就是前端分页的问题,获取到数据后,然后渲染数据与页码

第1页展示: 0-999的数据
第2页展示: 1000-1999的数据
第3页展示: 2000-2999的数据
...

就是说第page页,展示data中的数据开始位置start是 (page-1)*1000, limit是1000 ,用户点击某个页码按钮时,则直接从data获取数据并渲染。

function render(page){
    let limit=1000,
        start=(page-1)*limit,
        html='';
        
    for(let i=start, i<start+limit; i++){
        html += datap[i];
    }
    $('.tt').html(html);
}

之前做过前台分页,效果不是很好,数据大的话很卡。
我的方法是根据分页数创建相应多个div,class做相应的命名,例如第一个div定位page_1,第二个page_2...
然后需要写个方法创建下面的分页条,根据传递的当前页,每次创建一次分页条,或者全部创建出来,显示隐藏。

然后就说点击分页条,获取数值,让上面的div做相应的显示隐藏。。。

建议后端数据分组,前端请求时带上一个page,成功后page+1;
前端做的话:

 var aaa = [1,2,3,4,5,6,7];


    function paging(arr,num){
        var len = arr.length;
        var page =  Math.ceil(arr.length/num);
        var myarr = [];
        for(var i=0;i<len;i=i+page){
            myarr.push(arr.slice(i,i+page));
        }  
        return myarr;
    } 
    console.log(paging(aaa,3));

分情况考虑:
1、修改后端(需要改动的东西不多),毕竟一次性异步请求这么多数据,用户体验不是非常的好。如果是这样的话,只要双方定义好接口就好,你只需要用(template)展示数据即可。
2、老板坚持自己的想法,只能修改前端的话,做成tab栏形式的!根据你分页的效果,去规定自己如何去分配所有数据!

  • 尽量说服你的老板,别让自己太辛苦了!加油!

(如果有不对的地方,感谢纠正!)

推荐问题