ajax分批mysql_jquery-ajax高效分页(mysql版)

edbd877497f6eae26589e90e2980a1bd.png

2:这个实现首先把后台数据库返回的RowSet转化成json格式的字符串,再把这个json格式的字符串传给前台,用jquery解析

RowSet数据到json格式的数据转化函数如下:

/*

* @param count 数据总条目数

* @param pageCount 每页显示数据数

* */

private static String RowSetToJson(RowSet rt,int count,int pageCount){

ResultSetMetaData rm=null;

StringBuilder sb=new StringBuilder();

try {

rm=rt.getMetaData();

sb.append("{\"pageCount\":\""+count+"\",\"pageData\":[");

int columNum=rm.getColumnCount();

List list=new ArrayList();

for(int i=0;i

list.add(rm.getColumnName(i+1));

}

for(int i=0;i

sb.append("{");

for(int j=0;j

if(j!=list.size()-1){

sb.append("\""+list.get(j)+"\":\""+rt.getString(list.get(j))+"\",");

}else{

sb.append("\""+list.get(j)+"\":\""+rt.getString(list.get(j))+"\"");

}

}

if(i!=pageCount-1){

sb.append("},");

}else{

sb.append("}");

}

}

sb.append("]}");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return sb.toString();

}

调用转化函数方法:

public static String getJson(String tableName,String select,String where,String orderby,int pageIndex,int pageCount){

StringBuilder sb=new StringBuilder();

sb.append("select "+select+" from "+tableName);

if(!"".equals(where)){

sb.append(" ");

if(where.startsWith("where")){

sb.append(" "+where);

}else{

sb.append(" where "+where);

}

}

sb.append(" "+orderby+" ");

int temp=(pageIndex-1)*pageCount;

sb.append(" limit "+temp+","+pageCount);

RowSet rt=DBop.search(sb.toString());

//求数据总条目数

int rowNum=0;

rowNum=DBop.getNum(tableName,where);

return RowSetToJson(rt,rowNum,pageCount);

}

3:在action函数里调用方法:

import com.jiang.DB.GetData;

import com.opensymphony.xwork2.ActionSupport;

public class GetPageData extends ActionSupport {

private String p;//当前页

private String orderby;//排序规则

private String data;

public String getData() {

return data;

}

public void setData(String data) {

this.data = data;

}

public String getP() {

return p;

}

public void setP(String p) {

this.p = p;

}

public String getOrderby() {

return orderby;

}

public void setOrderby(String orderby) {

this.orderby = orderby;

}

public String execute()throws Exception{

if("".equals(orderby)){

orderby="order by id_t";

}

if("".equals(p)){

p=String.valueOf(1);

}

if(Integer.parseInt(p)==0){

p=String.valueOf(1);

}

data=GetData.getJson("pagetest", "*", "","order by id_t", Integer.parseInt(p), 10);

// System.out.println(data);

return SUCCESS;

}

}]

4:页面ajax请求代码:

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

jquery-ajax分页

var orderby="order by id_t";

$(document).ready(function(){

initData(0);

});

//翻页响应

function pageselectCallback(page_id,jq) {

initData(page_id);

}

function initData(pageindx)

{

var tbody="";

var pageCount="";

$.ajax({

type: "POST",//用POST方式传输

dataType:"json",//数据格式:JSON

url:'getData.action',//目标地址

async:false,//作用是防止在ajax成功调用之前就调用$("#Pagination").pagination,这个时候数据个数还没有初始化

data:"p="+(pageindx+1)+"&orderby="+escape(orderby),

beforeSend:function(){$("#divload").show();$("#Pagination").hide();},//发送数据之前

complete:function(){$("#divload").hide();$("#Pagination").show();},//接收数据完毕

success:function(json) {

$("#productTable tr:gt(0)").remove();

var productData = json.pageData;

pageCount=json.pageCount;

if(productData==""){

$("#divload").hide();

dis();

return false;

}

$.each(productData, function(i, n) {

var trs = "";

trs += "

" + n.id_t + ""+n.name_t+""+n.reamark_t+""+n.age_t+""+n.hobby_t+" 编辑   查看";

tbody+=trs;

});

$("#productTable").append(tbody);

//行交替颜色

$("#productTable tr:gt(0):odd").attr("class", "");

$("#productTable tr:gt(0):even").attr("class", "");

}//end of success

});

if(pageCount!=0){

$("#Pagination").pagination(pageCount, {

callback: pageselectCallback,

prev_text: '<< 上一页',

next_text: '下一页 >>',

items_per_page:10,

num_display_entries:6,

current_page:pageindx,

num_edge_entries:2

});

}

}

//排序

function Sort(ordercolumn,ordertipid){

var ordertype="";//1:desc,0:asc

var $orderimg = $("#"+ordertipid);

if($orderimg.html()!="")

{

var imgsrc="";

imgsrc = $("img",$orderimg).attr("src");

if(imgsrc.indexOf("asc")>-1){

$(".ordertip").empty();

$orderimg.html(" sort_desc.gif%5C%22");

ordertype = 1;

}

else

{

$(".ordertip").empty();

$orderimg.html(" sort_asc.gif%5C%22");

ordertype = 0;

}

}

else

{

$(".ordertip").empty();

$orderimg.html(" sort_desc.gif%5C%22");

ordertype = 1;

}

orderby = ordercolumn+"_"+ordertype;

initData(0);

}

idsort_desc.gifnamesort_desc.gifremarksort_desc.gifagesort_desc.gifhobbysort_desc.gif操作sort_desc.gif

5:struts.xml代码:

/pageData.jsp

6:原代码下载:

下载次数: 2193

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-03-23 10:56

浏览 8292

论坛回复 / 浏览 (11 / 19626)

评论

11 楼

无根V稻草

2011-03-28

楼主啊 你这个方法是不错哦,就是代码貌似有点不简洁吧

10 楼

bxhwjs

2011-03-24

jquery这玩意处理后台数据确实不错,处理前端浏览器那就是一个悲剧。。。

9 楼

wucc1986

2011-03-24

不会写成jQuery插件封装一下的啊

我之前写过一个,但是有个问题一直没解决

一个页面如果有2个分页表格的时候就会冲突。

8 楼

birdbiena

2011-03-24

a881127b 写道

lkjust08 写道

谢谢LZ分享,写的不错。感觉在web前端的处理有些繁琐,能否简化一些?

我也觉得有不足,这只是项目中备用的解决办法,因为模块化不好,没有被采用,项目中任然用假分页实现,由于太忙,没有在花多少时间想这个。有好的想法可以一起商量。

你写的挺好了,我一直想写一个Jquery的分页,可是一直拖着没写,感觉你写的很不错了,可扩展性还不错.

建议你加上静态查询和静态过滤等功能~

jQuery 完成这些应该不难.

7 楼

leepengyu

2011-03-24

感觉在web前端处理好麻烦,不如在数据库查询的时候直接就写分页SQL,简单易于维护也方便重用

6 楼

a881127b

2011-03-24

lkjust08 写道

谢谢LZ分享,写的不错。感觉在web前端的处理有些繁琐,能否简化一些?

我也觉得有不足,这只是项目中备用的解决办法,因为模块化不好,没有被采用,项目中任然用假分页实现,由于太忙,没有在花多少时间想这个。有好的想法可以一起商量。

5 楼

a881127b

2011-03-24

風一樣的男子 写道

比我之前写的复杂多了

我做的时候也觉得很复杂,而且模块性不好,放在这也是为了好好与大家分享些想法。

4 楼

風一樣的男子

2011-03-24

比我之前写的复杂多了

3 楼

lkjust08

2011-03-23

谢谢LZ分享,写的不错。感觉在web前端的处理有些繁琐,能否简化一些?

2 楼

struts

2011-03-23

不简洁。。。

1 楼

wavelet

2011-03-23

如果跟数据库绑定。。。就有点。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值