基于JSON实现数据列表翻页显示.docx

上传人:b****5 文档编号:7663639 上传时间:2023-01-25 格式:DOCX 页数:11 大小:79.32KB
下载 相关 举报
基于JSON实现数据列表翻页显示.docx_第1页
第1页 / 共11页
基于JSON实现数据列表翻页显示.docx_第2页
第2页 / 共11页
基于JSON实现数据列表翻页显示.docx_第3页
第3页 / 共11页
基于JSON实现数据列表翻页显示.docx_第4页
第4页 / 共11页
基于JSON实现数据列表翻页显示.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

基于JSON实现数据列表翻页显示.docx

《基于JSON实现数据列表翻页显示.docx》由会员分享,可在线阅读,更多相关《基于JSON实现数据列表翻页显示.docx(11页珍藏版)》请在冰豆网上搜索。

基于JSON实现数据列表翻页显示.docx

基于JSON实现数据列表翻页显示

基于JSON实现数据列表翻页显示

(1)

2010-08-1809:

03吴砥51CTO.com我要评论

(2)

本文要介绍的是一种采用纯前台方案,可以实现数据列表显示过程的翻页功能,其特点是以JSON,jQuery和Trimpath来实现前台数据的列表显示与翻页控制,整个过程中不依赖后台。

【51CTO独家特稿】在Web开发过程中,我们常常要实现大量同结构数据在网页上的列项/列表显示,相当多的时间都花在数据显示的处理上。

而数据列表显示过程中的翻页功能,则是Web开发中非常常用的功能,有多种实现方法。

由于涉及到显示页面的数据更新问题,因此,多数实现方法往往用到前后台交互功能,利用后台逻辑控制功能来提供支持,完成前台数据显示的翻页功能。

这样的处理方式,的确可以解决很多情况下的实际问题,然而代价是增加了前后台交互的次数,每一次翻页都要请求后台逻辑控制程序和后台数据库,也增加了用户等待时间。

本文要介绍的是一种采用纯前台方案,可以实现数据列表显示过程的翻页功能,其特点是以JSON,jQuery和Trimpath来实现前台数据的列表显示与翻页控制,整个过程中不依赖后台,不需要用到任何JSP,PHP,ASP或其他动态网页代码,属于纯前台程序,在使用时,为用户提供了很大的灵活性。

具体实现过程包括如下步骤:

1、将需要列表翻页显示的数据处理为JSON的格式,如代码1所示。

为简易起见,这里仅列出九条数据,实际上可以有更多条数据包含于JSON文件中,通过AJAX方式从后台请求得到存有数据的JSON对象,或者也可以直接采用前台jQuery加载JSON文件的方式得到。

(相关文章推荐:

理解jQuery解析JSON数据对象原理)

1代码1:

2list.json

3

4{

5"todo":

[

6{

7"task":

"GotoUS",

8"time":

"2010-09-05",

9"location":

"PA"

10},

11{

12"task":

"ComebackChina",

13"time":

"2010-09-15",

14"location":

"Beijing"

15},

16{

17"task":

"Gotolab",

18"time":

"2010-09-20",

19"location":

"Wuhan"

20},

21{

22"task":

"GotoShopping",

23"time":

"2010-09-25",

24"location":

"Wuhan"

25},

26{

27"task":

"Attendconference",

28"time":

"2010-09-30",

29"location":

"Beijing"

30},

31{

32"task":

"ViewTV",

33"time":

"2010-10-01",

34"location":

"Wuhan"

35},

36{

37"task":

"ViewSAKAI",

38"time":

"2010-10-02",

39"location":

"Wuhan"

40},

41{

42"task":

"ViewMovie",

43"time":

"2010-10-01",

44"location":

"Wuhan"

45},

46{

47"task":

"Reviewpapers",

48"time":

"2010-10-03",

49"location":

"Wuhan"

50}

51]

52}

2、编写前台显示代码,采用Trimpath模板编写列表数据的模板化显示部分,如代码2所示。

在这里,采用Trimpath模板来编写表格体(tbody)中的内容,采用名为list_container的div作为目标显示容器。

1代码2:

2list.html

3

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01//EN""http:

//www.w3.org/TR/html4/strict.dtd">

4

5

6

7

8List

9

10

11

12

13

14

15

TheListPage

16

17ItemsperPage:

18

19

20

21

none;">

22

23

24

25Task

26Time

27Location

28

29

30

31{foritemintodo}

32

33

34

35

36

37{/for}

38

39

40previous

41

42next

43

44

45

46

${item.task}${item.time}${item.location}

47

48

none;">

49

50

51

52

3、采用CSS样式,对显示页面予以修饰,如代码3所示。

53代码3:

54list.css

55form{margin:

10px0;}

56table{border-width:

1px;border-style:

solid;width:

600px;}

57td{border-width:

1px;border-style:

solid;padding:

3px5px;}

58thead{font-weight:

bold;background-color:

#F0F0F0;}

59

60#list_input_pagesize_container{margin:

10px0;}

61#list_input_pagesize{width:

50px;}

62#list_next{float:

right;}

63#list_previous{float:

left;}

64#list_td_foot{text-align:

center;}

65#list_td_task{width:

50%}

66#list_td_time{width:

20%}

67#list_td_location{width:

30%}

4、采用jQuery来控制前台翻页显示(如代码4所示),这是本方法的关键。

需要用到jQuery的JSON处理功能和Trimpath模板加载功能,该方法的主要思路是:

将所需显示的包含全部目标数据的JSON对象拆分成多个JSON对象,集中存入一个数组,数组中每个JSON对象对应包含一个页面需要显示的内容,然后根据用户对页码的选择,将与页码对应的那个JSON对象送到Trimpath模板加载,在页面上显示出来。

当用户在页面上点击“前一页”、“后一页”链接进行翻页控制的时候,就更换要加载的JSON数据对象,这样就可以在不刷新页面的情况下实现快速的翻页响应,由于是纯前台控制,不需请求后台,唯一的时间消耗只是重新加载一遍前台模板,因此速度很快。

该程序中采用了三个对象,分别是:

1)json:

类型为JSON对象,功能是用来存储初始获得的JSON对象,其中包含所有需要显示的数据;

2)data:

类型是数组,功能是用来存储经过了拆分处理的每一页需要显示的JSON对象的集合,如前所述;

3)info:

类型是JSON对象,功能是用来存储翻页显示过程中的控制信息(如:

currentPageNo,pageSize等)。

另外,该程序还提供了页面尺寸修改的功能,可以供用户修改每一页显示的数据项数。

1代码4:

2list.js

3varpageShow=function(){

4varjson={};//Theoriginaljsonobject

5vardata=[];//Thearrayofallpagelist,includeseachpageitems

6varinfo={};//Thejsonobjecttosavepageinformation

7

8vargetPageSize=function(){returninfo.pageSize;};

9varsetPageSize=function(pageSize){info.pageSize=pageSize;};

10vargetItemNumber=function(){returninfo.itemNumber;};

11varsetItemNumber=function(itemNumber){info.itemNumber=itemNumber;};

12vargetPageNumber=function(){returninfo.pageNumber;};

13varsetPageNumber=function(pageNumber){info.pageNumber=pageNumber;};

14vargetCurrentPageNo=function(){returninfo.currentPageNo;};

15varsetCurrentPageNo=function(currentPageNo){info.currentPageNo=currentPageNo;};

16

17varloadTemplate=function(json){

18$("#list_container").hide();

19$("#list_container").html(TrimPath.processDOMTemplate("list_template",json));

20$("#list_container").show();

21};

22

23varshowPageNo=function(){

24$("#list_pageno").text(getCurrentPageNo()+"/"+getPageNumber());

25};

26

27varshowPreviousPage=function(){

28varcurrentPageNo=getCurrentPageNo();

29varpageNumber=getPageNumber();

30if(currentPageNo!

=1){

31currentPageNo--;

32setCurrentPageNo(currentPageNo);

33loadTemplate(data[currentPageNo-1]);

34showPageNo();

35}

36};

37

38varshowNextPage=function(){

39varcurrentPageNo=getCurrentPageNo();

40varpageNumber=getPageNumber();

41if(currentPageNo!

=pageNumber){

42currentPageNo++;

43setCurrentPageNo(currentPageNo);

44loadTemplate(data[currentPageNo-1]);

45showPageNo();

46}

47};

48

49varshowData=function(){

50varpageSize=getPageSize();

51setPageSize(pageSize);

52

53varitemNumber=json.todo.length;

54setItemNumber(itemNumber);

55

56varpageNumber=0;

57if(itemNumber%pageSize==0){

58varpageNumber=itemNumber/pageSize;

59}

60else{

61pageNumber=Math.floor(itemNumber/pageSize)+1;

62}

63setPageNumber(pageNumber);

64

65varcurrentPageNo=1;

66setCurrentPageNo(currentPageNo);

67

68//Validateifthereisonlyonepage

69if(pageNumber==1){

70loadTemplate(json);

71showPageNo();

72}

73else{

74for(vari=0,j=0;i

75if(!

data[j]){

76data[j]=$.parseJSON('{"todo":

[]}');

77}

78data[j].todo[i]=json.todo[i];

79if(i%getPageSize()==getPageSize()-1){

80j++;

81}

82}

83

84loadTemplate(data[getCurrentPageNo()-1]);

85

86showPageNo();

87}

88};

89

90vargetData=function(path){

91$.getJSON(path,function(data){

92json=data;

93showData();

94});

95};

96

97varinitPageShow=function(){

98setPageSize(5);

99$("#list_input_pagesize").val(getPageSize());

100varpath="/list/data/list.json";

101getData(path);

102

103$("#list_button_pagesize").bind("click",function(){

104varnewPageSize=parseInt($("#list_input_pagesize").val());

105setPageSize(newPageSize);

106data=[];

107showData();

108$("#list_input_pagesize").focus();

109returnfalse;

110});

111$("#list_previous").live("click",function(){

112showPreviousPage();

113returnfalse;

114});

115$("#list_next").live("click",function(e){

116showNextPage();

117returnfalse;

118});

119$("#list_input_pagesize").focus();

120};

121

122initPageShow();

123}

124

125varinit=function(){

126pageShow();

127}

128

129init();

5、程序中所有文件的存储结构如图1所示。

图1

6、程序运行结果如图2所示。

图2

综上所述,本文所介绍的翻页显示控制方法避免了前后台交互的问题,使前台程序可以独立运转,独立控制翻页,而无需依赖后台支持,使用过程较为灵活,用户响应时间很短,无需刷新页面和请求后台数据,具有很高的效率。

在使用过程中,可以将其中的翻页函数以jQuery函数调用方式予以应用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1