怎么在jsp页面把json数据实现分页显示

JavaScript010

怎么在jsp页面把json数据实现分页显示,第1张

jsp页面分页显示json数据,需要有分页的方法:

参考举例:

function $(id) {

return document.getElementById(id)

} //定义获取ID的方法

function GotoPage(num) { //跳转页

Page = num

OutputHtml()

}

var PageSize = 9//每页个数

var Page = 1//当前页码

function OutputHtml() {

var obj = eval(siteList)//获取JSON

var sites = obj.sites

//获取分页总数

var Pages = Math.floor((sites.length - 1) / PageSize) + 1

if (Page <1) Page = 1//如果当前页码小于1

if (Page >Pages) Page = Pages//如果当前页码大于总数

var Temp = ""

var BeginNO = (Page - 1) * PageSize + 1//开始编号

var EndNO = Page * PageSize//结束编号

if (EndNO >sites.length) EndNO = sites.length

if (EndNO == 0) BeginNO = 0

if (! (Page <= Pages)) Page = Pages

$("total").innerHTML = "Total:<strong class='f90'>" + sites.length + "</strong> Show:<strong class='f90'>" + BeginNO + "-" + EndNO + "</strong>"

//分页

if (Page >1 &&Page !== 1) {

Temp = "<a href='javascript:void(0)' onclick='GotoPage(1)'><<Index</a><a href='javascript:void(0)' onclick='GotoPage(" + (Page - 1) + ")'>Previous</a>"

} else {

Temp = "<<Index Previous "

}

//完美的翻页列表

var PageFrontSum = 3//当页前显示个数

var PageBackSum = 3//当页后显示个数

var PageFront = PageFrontSum - (Page - 1)

var PageBack = PageBackSum - (Pages - Page)

if (PageFront >0 &&PageBack <0) PageBackSum += PageFront//前少后多,前剩余空位给后

if (PageBack >0 &&PageFront <0) PageFrontSum += PageBack//后少前多,后剩余空位给前

var PageFrontBegin = Page - PageFrontSum

if (PageFrontBegin <1) PageFrontBegin = 1

var PageFrontEnd = Page + PageBackSum

if (PageFrontEnd >Pages) PageFrontEnd = Pages

if (PageFrontBegin != 1) Temp += '<a href="javascript:void(0)" onclick="GotoPage(' + (Page - 10) + ')" title="前10页">..</a>'

for (var i = PageFrontBegini <Pagei++) {

Temp += " <a href='javascript:void(0)' onclick='GotoPage(" + i + ")'>" + i + "</a>"

}

Temp += " <strong class='f90'>" + Page + "</strong>"

for (var i = Page + 1i <= PageFrontEndi++) {

Temp += " <a href='javascript:void(0)' onclick='GotoPage(" + i + ")'>" + i + "</a>"

}

if (PageFrontEnd != Pages) Temp += " <a href='javascript:void(0)' onclick='GotoPage(" + (Page + 10) + ")' title='后10页'>..</a>"

if (Page != Pages) {

Temp += " <a href='javascript:void(0)' onclick='GotoPage(" + (Page + 1) + ")'>Next</a><a href='javascript:void(0)' onclick='GotoPage(" + Pages + ")'>Last>></a>"

} else {

Temp += " Next Last>>"

}

$("pagelist").innerHTML = Temp

//输出数据

if (EndNO == 0) { //如果为空

$("content").innerHTML += "<h1>No Images</h1>"

return

}

var html = ""

for (var i = BeginNO - 1i <EndNOi++) {

html += "<div class='entry'>"

html += "<a href='" + sites[i].Url + "' rel='bookmark' title=" + sites[i].Name + ">"

html += "<img src='" + sites[i].Pic + "' width='200' height='170' />"

html += "<p class='url'><span>" + sites[i].Name + "</span></p></a>"

html += "</div>"

}

$("content").innerHTML = html

clickShow()//调用鼠标点击事件

//键盘左右键翻页

document.onkeydown = function(e) {

var theEvent = window.event || e

var code = theEvent.keyCode || theEvent.which

if (code == 37) {

if (Page >1 &&Page !== 1) {

GotoPage(Page - 1)

}

}

if (code == 39) {

if (Page != Pages) {

GotoPage(Page + 1)

}

}

}

//鼠标滚轮翻页

function handle(delta) {

if (delta >0) {

if (Page >1 &&Page !== 1) {

GotoPage(Page - 1)

}

} else {

if (Page != Pages) {

GotoPage(Page + 1)

}

}

}

function wheel(event) {

var delta = 0

if (!event)

/* For IE. */

event = window.event

if (event.wheelDelta) {

/* IE或者Opera. */

delta = event.wheelDelta / 120

/** 在Opera9中,事件处理不同于IE

*/

if (window.opera) delta = -delta

} else if (event.detail) {

/** 兼容Mozilla. */

/** In Mozilla, sign of delta is different than in IE.

* Also, delta is multiple of 3.

*/

delta = -event.detail / 3

}

/** 如果 增量不等于0则触发

* 主要功能为测试滚轮向上滚或者是向下

*/

if (delta) handle(delta)

}

/** 初始化 */

if (window.addEventListener)

/** Mozilla的基于DOM的滚轮事件 **/

window.addEventListener("DOMMouseScroll", wheel, false)

/** IE/Opera. */

window.onmousewheel = document.onmousewheel = wheel

}

//获取链接地址和网站名称

function showLink(source) {

var siteUrl = $("siteurl")

var siteName = $("sitename")

var description = $("description")

if (source.getAttribute("rel") == "bookmark") {

var url = source.getAttribute("href")

var title = source.getAttribute("title")

siteUrl.innerHTML = "<a href='" + url + "' target='_blank'>" + url + "</a>"

siteName.innerHTML = title

}

}

//鼠标点击事件

function clickShow() {

var links = $("content").getElementsByTagName("a")

for (var i = 0i <links.lengthi++) {

var url = links[i].getAttribute("href")

var title = links[i].getAttribute("title")

links[i].onclick = function() {

showLink(this)

return false

}

}

}

说明:

1、读取外部数据JSON并根据设置分页显示,添加删除酷站都可以在JSON文件里改;

2、点击酷站后,右侧的框里显示网站的地址和名称并带有链接,DESCRIPTION部分偷了个懒没写,需要的可以自己加;

3、支持键盘翻页和鼠标滚轮翻页;

//    第一步,获取JSON数据

$http.get("xxx.json").success(function(data){

    $scope.currentData = data//定义变量存储获取到的JSON数据

})

$scope.tableData = [] // 定义表格展示用到的数据

$scope.currentPage = 1//定义初始页码

$scope.pageSize = 5 // 定义每页的数据条数

// HTML写个表格,这个不难,自己写

ng-repeat = "tableData" // 表格数据ng-repeat 循环赋值

//  翻页功能

$scope.changePage =  function(type,$scope.currentPage){

        // 清空展示的数据

        $scope.tableData = []

    // 上一页

    if(type === 'prev'){

        Math.min(1,$scope.currentPage--)//    页码递减

        $scope.currentData.each(function(index,item){

            // 循环读取表格数据,用来赋值给表格展示的数组

            // 如果当前的下标是当前页的范围,那么丢给表格展示数据用到的变量数组

            if($scope.currentPage * $scope.pageSize > index && index >= ($scope.currentPage - 1)*$scope.pageSize){

                $scope.tableData.push(item)

            }

        })

    }

    else{

        // 自己写,同样的逻辑

    }

}

//    进入界面,调用一遍翻页功能,不然没数据。

/** 

 * 有的地方自己适当改一下,没写的那么标准

 */

你直接用jquery就可以了,把数据全部取出来以后,直接在页面上分页。这个是js里的代码/*分页,每页4个*/

$(document).ready(function(){

$('ul.paginated2').each(function(){ var currentPage=0//显示10项,隐藏显示内容的前面的项和后面的项

var numPerPage=3

var $ul=$(this)

var repaginate=function(){

$ul.find('li').show()

.slice(0,currentPage*numPerPage)

.hide()

.end()

.slice((currentPage+1)*numPerPage+1).hide().end()}

var numRows=$('ul.paginated2 li').length//添加分页行显示

//alert(numRows)

var numPages=Math.ceil(numRows/numPerPage)

var $pager=$('<div class="pager"></div>')

for(var page=0page<numPagespage++){

$('<div class="page-number">'+(page+1)+'</div>')

.bind('click',{'newPage':page},function(event){

currentPage=event.data['newPage']

repaginate()

$(this).addClass('active').siblings().removeClass('active')

})

.appendTo($pager).addClass('clickable')

}

$pager.find('div.page-number:first').addClass('active')

$pager.insertBefore($ul)

repaginate()

})})