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

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

1:商品分页列表页

2:商品详情页

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

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

解决思路:使用sessionStorage

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

代码如下

 1     <script>
 2         var pageIndex = 0;
 3         var historyData = [];
 4         var numID=‘id_0‘;
 5         var listData = {};
 6
 7         $(function () {
 8             if (sessionStorage.getItem("listData")) {
 9                 state = JSON.parse(sessionStorage.getItem("listData"));
10                 sessionStorage.removeItem("listData");
11                 pageIndex = state.pageIndex;
12                 numID = state.numID;
13                 historyData = state.historyData;
14                 for (var i = 0; i < historyData.length; i++) {
15                     //填充列表的方法
16                 }
17                 //改变已查看的商品样式方法
18             } else {
19                 LoadData();
20             }
21         })
22
23         function LoadData() {
24             $.ajax({
25                 type:‘get‘,
26                 async:false,
27                 url:currentUrl+‘leave/GetVacationInfos‘,
28                 headers: {
29                     "Token": token
30                 },
31                 data:{
32                     uid:"xxx",
33                     pageSize:pageSize,
34                     pageIndex:pageIndex,
35                 },
36                 dataType:‘json‘,
37                 success: function (result) {
38                     for (var i = 0; i < result.length; i++) {
39                         historyData.push({data:result[i]});
40                     }
41                     pageIndex++;
42                 }
43             })
44         }
45
46
47         function ToDetail(id) {
48             state = { pageIndex: pageIndex, numID: numID, historyData: historyData };
49             sessionStorage.setItem("listData", JSON.stringify(state));
50             window.location = ‘ToDetail?numID=‘ + id;
51         }
52     </script>
时间: 2024-11-05 17:23:28

微信 HTML5 实现列表页与详情页无刷新返回 seesionStorage的相关文章

element ui源码解析 -- Pagination篇( 副:列表页进入详情页再返回后,如何保持当前页码正确 )

之所以看Pagination源码,由于一个问题: 需求:从列表页进入详情页后再返回,需求方希望保持在当前的页码而不是重新定位到第一页 问题:按照element ui文档设置current-page后请求的数据正常,但pagination的页码显示却不正确,不管current-page值等于多少,永远显示第一页 解决方案: 1. 改 :current-page="currentPage" 为 :current-page.sync="currentPage" 2.查询接

vue——列表页进详情页,第一次很慢,第二次就很快问题解决方法

参考:https://segmentfault.com/q/1010000010829474 问题:列表页进详情页,第一次很慢,第二次就很快. 原因:我原本是使用组件懒加载,每次第一次切换路由的时候,都要去加载相应的组件的js文件,需要等文件加载完之后,路由才能切换过去.后面切换的话js都下载过了,所以切换就不卡了. 原router.js: import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) export d

Meteor 从一个列表页进入详情页如何快速显示详情

不管是做android开发,还是做网页web开发,都 会有列表,都需要点击列表进入列表项的详情页面,查看详细信息,能常情况下,我们都是将这一列表项的id传到详情页,由详情页再到数据库查询详细信息. 在用Meteor开发网站中,除了用传id的方法,外还提供了一种简单的方法,极大的方便了我们的开发,节省时间. 原文:http://blog.csdn.net/casun_li/article/details/46371811 1. 创建详情页的route  并传数据: (1)如可按传id的方法,则这样

亿级商品详情页架构演进技术解密 | 高可用架构系列

亿级商品详情页架构演进技术解密 | 高可用架构系列 --http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=210272034&idx=1&sn=3be9d2b53c7fec88716ee8affd2515f8&scene=1&srcid=UfXZNNOVZZyZjQmp0VOh&from=groupmessage&isappinstalled=0#rd 此文是开涛在[三体高可用架构群]之分享内容

6.侧边栏菜单详情页

这是在viewpager里又加入了viewpager,先写viewpager,再写indicate 1. 菜单详情页基类 public abstract class BaseMenuDetailPager { public Activity mActivity; public View mRootView;// 根布局对象 public BaseMenuDetailPager(Activity activity) { mActivity = activity; mRootView = initV

从零开始,搭建博客系统MVC5+EF6搭建框架(5),博客详情页、留言、轮播图管理、右侧统计博文

一.博客系统进度回顾 上一遍博客介绍到,系统已经实现到了发布以及前台布局展示,接下来就是实现一些,详情页,留言.轮播图管理.右侧博文统计信息实现. 二.博客系统详情页实现 2.1先来看看详情页展示的效果 2.2实现控制器在前台控制器中创建一个Blog的控制器,主要是展示博客分类以及详情页 Action详情页实现: 1 /// <summary> 2 /// 详情页 3 /// </summary> 4 /// <param name="id"><

HTML5: History API 无刷新更改地址栏

HTML5 新增的历史记录 API 可以实现无刷新更改地址栏链接,配合 AJAX 可以做到无刷新跳转. 简单来说:假设当前页面为renfei.org/,那么执行下面的 JavaScript 语句: window.history.pushState(null, null, "/profile/"); 之后,地址栏的地址就会变成renfei.org/profile/,但同时浏览器不会刷新页面,甚至不会检测目标页面是否存在. 应用:全站 AJAX,并使浏览器能够抓取 AJAX 页面 这个可以

微信小程序 项目实战(三)list 列表页 及 item 详情页

1.项目结构 2.list 列表页 (1)数据(逻辑) list.js // pages/list/list.js Page({ /** * 页面的初始数据 */ data: { title: '加载中...', // 状态 list: [], // 数据列表 type: '', // 数据类型 loading: true // 显示等待框 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { // options 为 board页传来的

微信小程序点击列表跳转到对应详情页

点击列表跳转到对应详情页: 用自定义属性data-index保存当前点击列表的index,在点击跳转的方法中获取index并且拼接到要跳转的路径后面: 跳转到详情页,在onLoad钩子中通过参数options获取传过来的index,渲染对应的数据 原文地址:https://www.cnblogs.com/zxmonster/p/11583729.html