求一个JS的翻页方法
现有的流程是这样的:从数据库中读取原始数据(数组A),然后进行处理,得到需要呈现在页面上的报表数据(数组B)。由于大部分的时间被消耗在了“原始数据→报表数据”的过程中,所...
现有的流程是这样的:
从数据库中读取原始数据(数组A),然后进行处理,得到需要呈现在页面上的报表数据(数组B)。由于大部分的时间被消耗在了“原始数据→报表数据”的过程中,所以我想在翻页的过程中跳过这个过程,也就是想到用不刷新页面的翻页,也就是得到报表数据后,每次翻页操作,都是从报表数据(数组B)中截取相应的数据。
可是这该怎么做呢?
我对JS不大熟,只会用JQUERY做些类似的东西,页面是用PERL写的(这个没关系,我需要的是思路)
求助高手,怎样才能点完翻页按钮后,直接去找那个数组(服务器的环境限制:没有cache机制。而存在cookie、session中又不现实——因为数据量很大) 展开
从数据库中读取原始数据(数组A),然后进行处理,得到需要呈现在页面上的报表数据(数组B)。由于大部分的时间被消耗在了“原始数据→报表数据”的过程中,所以我想在翻页的过程中跳过这个过程,也就是想到用不刷新页面的翻页,也就是得到报表数据后,每次翻页操作,都是从报表数据(数组B)中截取相应的数据。
可是这该怎么做呢?
我对JS不大熟,只会用JQUERY做些类似的东西,页面是用PERL写的(这个没关系,我需要的是思路)
求助高手,怎样才能点完翻页按钮后,直接去找那个数组(服务器的环境限制:没有cache机制。而存在cookie、session中又不现实——因为数据量很大) 展开
1个回答
展开全部
如果数据量太大,一下子把全部数据发到页面上,也会使页面变得很慢。当然,如果数据量是几十条这样的数量级也还可以。
不刷新的话,有两个办法:
一是ajax方式,JS去请求个服务端程序,传入页号,这个程序每次只取一页的数据。这也是常用的办法,分页由服务端实现。
二是你希望的,把组织好的数据全部传到页面上,通过JS方式分页呈现。对这种分页,可以用根据数组下标进行分页:
比如每页10条数据,第一页就取下标为0-9的数据显示出来,第二页就是10-19,分页的算法你应该会的吧。
数据可以显示在一个容器(DIV或TABLE等)里,每次翻页时,替换这个容器的内容(如容器的innerHTML)。
比如你的数组是 data[], 用来显示的容器是 <div id="viewdata"></div>,大概可以这么做:
------------------------------------
<script>
function showdata(pageindex)
{
var pagesize = 10;
var recordstart = (pageindex - 1) * pagesize
var strhtml = '';
for (var i = 0; i < pagesize; i ++)
{
var recordindex = recordstart + i;
/*
这里取下标为recordindex的数据组织HTML字符串,如:
strhtml += data[recordindex];
*/
}
document.getElementById('viewdata').innerHTML = strhtml;
}
</script>
<div id="viewdata"></div>
<a href="javascript:showdata(1)">第一页</a>
<a href="javascript:showdata(2)">第二页</a>
....
-------------------------------------
至于想知道共有多少页,可以用这个算法:
var pagecount = parseInt((data.length - 1) / pagesize) + 1
不刷新的话,有两个办法:
一是ajax方式,JS去请求个服务端程序,传入页号,这个程序每次只取一页的数据。这也是常用的办法,分页由服务端实现。
二是你希望的,把组织好的数据全部传到页面上,通过JS方式分页呈现。对这种分页,可以用根据数组下标进行分页:
比如每页10条数据,第一页就取下标为0-9的数据显示出来,第二页就是10-19,分页的算法你应该会的吧。
数据可以显示在一个容器(DIV或TABLE等)里,每次翻页时,替换这个容器的内容(如容器的innerHTML)。
比如你的数组是 data[], 用来显示的容器是 <div id="viewdata"></div>,大概可以这么做:
------------------------------------
<script>
function showdata(pageindex)
{
var pagesize = 10;
var recordstart = (pageindex - 1) * pagesize
var strhtml = '';
for (var i = 0; i < pagesize; i ++)
{
var recordindex = recordstart + i;
/*
这里取下标为recordindex的数据组织HTML字符串,如:
strhtml += data[recordindex];
*/
}
document.getElementById('viewdata').innerHTML = strhtml;
}
</script>
<div id="viewdata"></div>
<a href="javascript:showdata(1)">第一页</a>
<a href="javascript:showdata(2)">第二页</a>
....
-------------------------------------
至于想知道共有多少页,可以用这个算法:
var pagecount = parseInt((data.length - 1) / pagesize) + 1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询