MUI 中使用 ajax下拉刷新时,数据怎么才能做到累加呢,谢谢

发布于 2022-09-05 10:04:29 字数 2955 浏览 12 评论 0

第一次加载10条成功,我在执行下拉刷新时,怎么让查询到的数据累加呢?下面是我的代码:

html:

    mui.init({
        pullRefresh: {
            container: '#pullrefresh',
            down: {
                callback: pulldownRefresh
            }
        }
    });
    function pulldownRefresh() {
        var page = 1;
        var size = 10;
        
        /*第一次加载时取得所有的li*/
        var table = jQuery('.mui-table-view');
        var cells = table.find('.mui-table-view-cell');
        var newCells = {};
        var url = MyAnviz.baseUrl + '/product/ajax/productlist.html';
        //查询参数,因为是假数据,因此这个对象没有作为查询参数使用
           var dataEntity = {
            "userId": "1",
            "page": page,
            "size": size
        };
        //刷新加载,更改page
        dataEntity.page = parseInt(dataEntity.page) + 1;
        console.log('page:' + dataEntity.page);
        
        mui.ajax({
        type: "GET",
        url: url,
        data: dataEntity,
        dataType: "json",
        success: function (data) {
            console.log('data' + data.data);
            
            for (var i = 0; i < data.data.length; i++) {
                var item = data.data[i];
                if(item){
                    var p_id = item.contentId;
                    var p_img = item.productorImg;
                    var p_name = item.productorName;
                    var p_des = item.productorDes;
                    var p_url = item.productorUrl;
                }
                
                /*新的 数组列表*/
                var li = jQuery('<li class="mui-table-view-cell mui-media js-media" data-id="' + p_id + '">' + '<img class="mui-media-object mui-pull-left js-img" src="' + p_img + '" /><div class="mui-media-body js-media-body">' + p_name + '</div>' + '<div class="anviz-ellipsis js-des js-info">' + p_des + '</div></li>');
                
                /*改变cells的length*/
                console.log('新的li为:' + li.length);
                
                /*新的li数组添加到第一次加载的10条li的后面*/
                /*执行到这一步时报错,原来的数据会被替换掉,这里要怎么改?cells返回的是"[object Object]11",看最后面的11应该是push进一条数据,但是这样的数据会报错*/
                cells += cells.push(li);
                /*将第二次刷新的数据一起append到table中*/
                table.append(cells);
            }

             table.last().addClass('anviz-media');
             mui('#pullrefresh').pullRefresh().endPulldownToRefresh();
             if (mui.os.plus) {
                mui.plusReady(function() {
                    setTimeout(function() {
                        mui('#pullrefresh').pullRefresh().pullupLoading();
                    }, 1000);

                });
            } else {
                mui.ready(function() {
                    mui('#pullrefresh').pullRefresh().pullupLoading();
                });
            }
           
        },
        error: function (data) {
            mui.alert('Error 500--Internal Server Error!');
        }
    })
 }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

伴梦长久 2022-09-12 10:04:29

下面是答案,整个粘贴:

<script type="text/javascript" charset="utf-8">
    mui.init({
        pullRefresh: {
            container: '#pullrefresh',
            down: {
                callback: pulldownRefresh
            }
        }
    });


    function pulldownRefresh() {
        var page = 1;
        var size = 10;
        
        /*第一次加载时取得所有的li*/
        var table = jQuery('.mui-table-view');
        var cells = table.find('.mui-table-view-cell');
        var newCells = {};
        var url = MyAnviz.baseUrl + '/product/ajax/productlist.html';
        //查询参数,因为是假数据,因此这个对象没有作为查询参数使用
           var dataEntity = {
            "userId": "1",
            "page": page,
            "size": size
        };
        //刷新加载,更改page
        dataEntity.page = parseInt(dataEntity.page) + 1;
        console.log('page:' + dataEntity.page);
        
        mui.ajax({
        type: "GET",
        url: url,
        data: dataEntity,
        dataType: "json",
        success: function (data) {
            console.log('data' + data.data);
            
            for (var i = 0; i < data.data.length; i++) {
                var item = data.data[i];
                if(item){
                    var p_id = item.contentId;
                    var p_img = item.productorImg;
                    var p_name = item.productorName;
                    var p_des = item.productorDes;
                    var p_url = item.productorUrl;
                }
                
                /*新的 数组列表*/
                var li = jQuery('<li class="mui-table-view-cell mui-media js-media" data-id="' + p_id + '">' + '<img class="mui-media-object mui-pull-left js-img" src="' + p_img + '" /><div class="mui-media-body js-media-body">' + p_name + '</div>' + '<div class="anviz-ellipsis js-des js-info">' + p_des + '</div></li>');
                /*改变cells的length*/
                console.log('新的li为:' + li.length);
                
                /*新的li数组添加到第一次加载的10条li的后面,这里怎么搞*/
                cells.push(li[0]);
                console.log('新的li数量' + cells.length);
                table.append(cells);
            }
            
             table.last().addClass('anviz-media');
             mui('#pullrefresh').pullRefresh().endPulldownToRefresh();
             
        },
        error: function (data) {
          
        }
    })
    
</script>
挽梦忆笙歌 2022-09-12 10:04:29

不应该是append在这个元素尾部添加元素么,html函数不是直接刷新?

另外也应该先组装完liDiv这个字符串,然后循环外面再执行追加,你现在循环一次就刷一次,一直刷新不说,效率也很低。


for (var i = 0; i < data.data.length; i++) {

    var item = data.data[i];
    var p_id = item.contentId;
    var p_img = item.productorImg;
    var p_name = item.productorName;
    var p_des = item.productorDes;
    var p_url = item.productorUrl;

    
    liDiv += '<li class="mui-table-view-cell mui-media js-media" data-id="' + p_id + '">' + '<img class="mui-media-object mui-pull-left js-img" src="' + p_img + '" /><div class="mui-media-body js-media-body">' + p_name + '</div>' + '<div class="anviz-ellipsis js-des js-info">' + p_des + '</div></li>';   
}
jsView.append(liDiv);
所谓喜欢 2022-09-12 10:04:29

我用的笨办法,直接在数组中push进新的数据 然后渲染数组

夜吻♂芭芘 2022-09-12 10:04:29

jquery对增删改查的操作
改:html API: http://jquery.cuishifeng.cn/h...
增:append API: http://jquery.cuishifeng.cn/a...
删:remove API: http://jquery.cuishifeng.cn/c...
插:find API:http://jquery.cuishifeng.cn/f...
......

送舟行 2022-09-12 10:04:29

泻药,其实我没怎么用过MUI,但是这里可能仅仅是个jquery问题。

var cells = table.find('.mui-table-view-cell');
cells += cells.push(li);

以上代码报错是因为cells是jq对象,也不能通过push添加节点。
看来lz对于jq的文档节点操作还是很熟悉,可以去看一下 @Aaron 提供的api资料。

@pommy 的回答已经差不多了,以下代码稍微就加了点注释。

var liDiv;
for (var i = 0; i < data.data.length; i++) {
    var item = data.data[i];
    if(item){
        var p_id = item.contentId;
        var p_img = item.productorImg;
        var p_name = item.productorName;
        var p_des = item.productorDes;
        var p_url = item.productorUrl;
    }
    liDiv += '<li class="mui-table-view-cell mui-media js-media" data-id="' + p_id + '">' + '<img class="mui-media-object mui-pull-left js-img" src="' + p_img + '" /><div class="mui-media-body js-media-body">' + p_name + '</div>' + '<div class="anviz-ellipsis js-des js-info">' + p_des + '</div></li>';
}
table.append(liDiv); // 此处table不一定正确,应该是原有li的parent
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文