jquery+json實(shí)現(xiàn)分頁(yè)效果
Json作為一種輕量級(jí)的數(shù)據(jù)交換格式,由于其傳輸數(shù)據(jù)格式的方便性,今天偶然想將其應(yīng)用于分頁(yè)實(shí)現(xiàn),分頁(yè)做為web開發(fā)一個(gè)長(zhǎng)久的話題,其應(yīng)用的高效與重要性就不多說(shuō)了
本文主要技術(shù):反射機(jī)制,Json數(shù)據(jù)格式,jquery
為了應(yīng)用的通用性,首先要根據(jù)反射機(jī)制,能將要返回的任意類型的結(jié)果對(duì)象轉(zhuǎn)化成Json類型的格式。
public static String toJSON(Object obj) { HashMap map = new HashMap(); Class c = obj.getClass(); // 利用反射機(jī) 制,把里面所有的屬性,反射出來(lái)使用,這樣放入任何一個(gè)對(duì)象, 都可以找到他們的屬性, // 把這些屬性的名,和屬性的值,封裝成一個(gè)map里, Field[] fields = c.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { String name = fields[i].getName(); try { fields[i].setAccessible(true); Object o = fields[i].get(obj); i f (o instanceof Number) { map.put(""" + name + """, o.toString()); } else if (o instanceof String) { map.put(""" + name + """, """ + o.toString() + """); } } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } } / / 把map對(duì)象變成字符串 // 這些格式還需要把=變成: String s = map.toString(); / /System.out.println(s); String str = s.replaceAll(""=", "":"); //System.out.println(str); return str; }
將要返回的多個(gè)對(duì)象轉(zhuǎn)換成Json類型的對(duì)象后,最后應(yīng)加上分頁(yè)的信息,最終將多個(gè)Json字符串,轉(zhuǎn)化成一整個(gè)Json類型
{"0":{"id":"0", "name":"dong0", "age":21}, "1":{"id":"1", "name":"dong1", "age":21}, "2":{"id":"2", "name":"dong2", "age":21}, "3":{"id":"3", "name":"dong3", "age":21}, "4":{"id":"4", "name":"dong4", "age":21}, "5":{"id":"5", "name":"dong5", "age":21}, "6":{"id":"6", "name":"dong6", "age":21}, "7":{"id":"7", "name":"dong7", "age":21}, "8":{"id":"8", "name":"dong8", "age":21}, "9":{"id":"9", "name":"dong9", "age":21}, "10":{"firstPage":1, "currentPage":1, "default_Record_Num":10, "lastPage":10, "frontPage":1, "sum":100, "nextPage":2}, "length":11}
當(dāng)信息發(fā)送到客戶端時(shí) ,只用jquery接收對(duì)象的數(shù)據(jù)就行了 ,這樣 可以實(shí)現(xiàn)前臺(tái)的樣式與后臺(tái)傳送的數(shù)據(jù)分離,更加簡(jiǎn)化了代碼
$.getJSON("result.jsp?page="+p, function(json) { $("#show").html("<tr><th>用戶ID</th><th>用戶名</th><th>用戶年齡</th></tr>"); for(var i=0 ; i<json.length-1; i++){ $("#show").append("<tr><td>"+json[i]["id"]+"</td><td>"+json[i]["name"]+"</ td><td>" +json[i]["age"]+"</td></tr>"); } $("#currentPage").attr("value",json[json.length-1]["currentPage"]); $("#pageCount").attr("value",json[json.length-1]["lastPage"]); });
利用JQuery與JSon實(shí)現(xiàn)的無(wú)刷新分頁(yè)代碼,具體代碼如下
需要四個(gè)文件
一個(gè)實(shí)體類文件 CategoryInfoModel.cs
一個(gè)SqlHelper SQLHelper.cs
一個(gè)AJAX服務(wù)端處理程序 PagedService.ashx
一個(gè)客戶端調(diào)用頁(yè)面 WSXFY.htm
CategoryInfoModel.cs和SQLHelper.cs我就不寫了,都知道是什么文件
PagedService.ashx 代碼如下
using System.Web.Script.Serialization; public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string strAction = context.Request["Action"]; //取頁(yè)數(shù) if (strAction == "GetPageCount") { string strSQL = "SELECT COUNT(*) FROM CategoryInfo"; int intRecordCount = SqlHelper.ExecuteScalar(strSQL); int intPageCount = intRecordCount / 10; if (intRecordCount % 10 != 0) { intPageCount++; } context.Response.Write(intPageCount); }//取每頁(yè)數(shù)據(jù) else if (strAction == "GetPageData") { string strPageNum = context.Request["PageNum"]; int intPageNum = Convert.ToInt32(strPageNum); int intStartRowIndex = (intPageNum - 1) * 10 + 1; int intEndRowIndex = (intPageNum) * 10 + 1; string strSQL = "SELECT * FROM ( SELECT ID,CategoryName,Row_Number() OVER(ORDER BY ID ASC) AS rownum FROM CategoryInfo) AS t"; strSQL += " WHERE t.rownum >= " + intStartRowIndex + " AND t.rownum <= " + intEndRowIndex; DataSet ds = new DataSet(); SqlConnection conn = SqlHelper.GetConnection(); ds = SqlHelper.ExecuteDataset(conn, CommandType.Text, strSQL); List<CategoryInfoModel> categoryinfo_list = new List<CategoryInfoModel>();//定義實(shí)體集合 for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { CategoryInfoModel categoryinfo = new CategoryInfoModel(); categoryinfo.CategoryInfoID = Convert.ToInt32(ds.Tables[0].Rows[i]["ID"]); categoryinfo.CategoryName = ds.Tables[0].Rows[i]["CategoryName"].ToString(); categoryinfo_list.Add(categoryinfo); } JavaScriptSerializer jss = new JavaScriptSerializer(); context.Response.Write(jss.Serialize(categoryinfo_list));//序列化實(shí)體集合為javascript對(duì)象 } }
WSXFY.htm 代碼如下
<head> <title>無(wú)刷新分頁(yè)</title> <script type="text/javascript" src="../Scripts/jquery-1.5.1.min.js"></script> <script type="text/javascript"> $(function () { $.post("PagedService.ashx", { "Action": "GetPageCount" }, function (response, status) { for (var i = 1; i <= response; i++) { var td = $("<td><a href=''>" + i + "</a></td>"); $("#trPage").append(td); td.click(function (e) { e.preventDefault(); //不要導(dǎo)向鏈接 $.post("PagedService.ashx", { "Action": "GetPageData", "PageNum":$(this).text() }, function (response, status) { var categorys = $.parseJSON(response); $("#ulCategory").empty(); for (var i = 0; i < categorys.length; i++) { var category = categorys[i]; var li = $("<li>" + category.CategoryInfoID + "-" + category.CategoryName + "</li>"); $("#ulCategory").append(li); } }); }); } }); }); </script> </head> <body> <ul id="ulCategory"></ul> <table> <tr id="trPage"> </tr> </table> </body> </html>
以上就是本文的全部?jī)?nèi)容,希望能夠幫助大家實(shí)現(xiàn)分頁(yè)效果。
- JavaScript實(shí)現(xiàn)列表分頁(yè)功能特效
- js腳本分頁(yè)代碼分享(7種樣式)
- 純javascript實(shí)現(xiàn)分頁(yè)(兩種方法)
- ANGULARJS中使用JQUERY分頁(yè)控件
- JSP+EXt2.0實(shí)現(xiàn)分頁(yè)的方法
- JSP實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)示例
- 使用Jquery+Ajax+Json如何實(shí)現(xiàn)分頁(yè)顯示附JAVA+JQuery實(shí)現(xiàn)異步分頁(yè)
- JSP實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)顯示效果代碼
- JSP通用分頁(yè)框架
- jquery分頁(yè)插件jquery.pagination.js使用方法解析
- jquery分頁(yè)插件jquery.pagination.js實(shí)現(xiàn)無(wú)刷新分頁(yè)
- Angular.js與Bootstrap相結(jié)合實(shí)現(xiàn)表格分頁(yè)代碼
- js實(shí)現(xiàn)ajax分頁(yè)完整實(shí)例
- js多功能分頁(yè)組件layPage使用方法詳解
- 基于Vue.js的表格分頁(yè)組件
- 純JS前端實(shí)現(xiàn)分頁(yè)代碼
相關(guān)文章
自己動(dòng)手制作基于jQuery的Web頁(yè)面加載進(jìn)度條插件
進(jìn)度條插件在GitHub上多種多樣數(shù)量繁多,這總結(jié)出頁(yè)面進(jìn)度條插件的實(shí)現(xiàn)要點(diǎn),來(lái)教大家自己動(dòng)手制作基于jQuery的Web頁(yè)面加載進(jìn)度條插件2016-06-06Jquery easyui 實(shí)現(xiàn)動(dòng)態(tài)樹
本文給大家介紹jquery easyui實(shí)現(xiàn)動(dòng)態(tài)樹,本文通過(guò)代碼實(shí)例相結(jié)合的方式給大家展示jquery easyui實(shí)現(xiàn)動(dòng)態(tài)樹的過(guò)程,感興趣的朋友一起學(xué)習(xí)吧2015-11-11JQUERY 獲取IFrame中對(duì)象及獲取其父窗口中對(duì)象示例
經(jīng)常會(huì)用到iframe,難免會(huì)碰到需要在父窗口中使用iframe中的元素、或者在iframe框架中使用父窗口的元素,下面為大家簡(jiǎn)單介紹下本人的使用心得2013-08-08jQuery插件FusionWidgets實(shí)現(xiàn)的AngularGauge圖效果示例【附demo源碼】
這篇文章主要介紹了jQuery插件FusionWidgets實(shí)現(xiàn)的AngularGauge圖效果,結(jié)合具體實(shí)例形式分析了jQuery使用FusionWidgets插件載入xml數(shù)據(jù)實(shí)現(xiàn)AngularGauge圖的相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03jQuery Selectors(選擇器)的使用(七、子元素篇)
本系列文章主要講述jQuery框架的選擇器(Selectors)使用方法,我將以實(shí)例方式進(jìn)行講述,以簡(jiǎn)單,全面為基礎(chǔ),不會(huì)涉及很深,我的學(xué)習(xí)方法:先入門,后進(jìn)階!2009-12-12jQuery實(shí)現(xiàn)手機(jī)上輸入后隱藏鍵盤功能
最近做了這樣一個(gè)功能,讓用戶輸入手機(jī)發(fā)送驗(yàn)證碼,輸完11位手機(jī)號(hào)后,自動(dòng)隱藏鍵盤。下面通過(guò)本文給大家分享實(shí)現(xiàn)方法,一起看看吧2017-01-01