微信 HTML5 实现列表页与详情页无刷新返回 seesionStorage

最近在最微信端开发,遇到了一个比较有意思的问题。 

1:商品分页列表页

2:商品详情页

需求:  实现当在第N页的列表页,点击ID=Num的商品详情页,跳转到详情页后,再点击返回按钮,依旧返回到列表第N页,并显式的改变ID=Num商品的查看状态

注:详情页与列表页是两个视图页,并且要考虑弱网请求服务端接口比较慢的情况


解决思路:使用sessionStorage

在列表页中将请求服务端接口返回的列表信息使用一个对象dataList存储起来,并记录当前的页码pageIndex,当点击跳转某个商品详情页之前,将dataList与pageIndex存储进sessionStorage中,当第二次返回到列表页后,先去sessionStorage中寻址,看能不能找到缓存的列表信息,如果存在,就直接使用缓存中的dataList填充列表页,同时清除seesionStorage中的listData缓存,如果不存在,就请求服务端接口填充列表

代码如下


       var pageIndex = 0;
        var historyData = [];
        var numID='id_0';
        var listData = {};

        $(function () {
            if (sessionStorage.getItem("listData")) {
                state = JSON.parse(sessionStorage.getItem("listData"));
                sessionStorage.removeItem("listData");//防止调转回列表页,点击刷新时,继续读缓存
                pageIndex = state.pageIndex;
                numID = state.numID;
                historyData = state.historyData;
                for (var i = 0; i < historyData.length; i++) {
                    //填充列表的方法
                }
                //改变已查看的商品样式方法
            } else {
                LoadData();
            }
        })

        function LoadData() {
            $.ajax({
                type:'get',
                async:false,
                url:currentUrl+'leave/GetVacationInfos',
                headers: {
                    "Token": token   
                },
                data:{
                    uid:"xxx",
                    pageSize:pageSize,
                    pageIndex:pageIndex,
                },
                dataType:'json',
                success: function (result) {
                    for (var i = 0; i < result.length; i++) {
                        historyData.push({data:result[i]});
                    }
                    pageIndex++;
                }
            })
        }

	//跳转详情页的方法(点击列表某一行时,调用)
        function ToDetail(id) {
            state = { pageIndex: pageIndex, numID: numID, historyData: historyData };
            sessionStorage.setItem("listData", JSON.stringify(state));
            window.location = 'ToDetail?numID=' + id;
        }
 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值