1. 程式人生 > >基於Jquery+Ajax+Json實現分頁顯示

基於Jquery+Ajax+Json實現分頁顯示

1.後臺action產生json資料。

List blackList = blackService.getBlackInfoList(mobileNum, gatewayid, startDate, endDate);
int totalRows = blackList.size();
StringBuffer sb = new StringBuffer();
         sb.append("{\"totalCount\":\""+totalRows+"\",");
         sb.append("\"jsonRoot\":[");
         for (int i=0;i<blackList.size();i++) {
             LBlack blackInfo = (LBlack)blackList.get(i);
             sb.append("{\"id\":\""+ blackInfo.getId());
             sb.append("\",");  
             sb.append("\"mobile\":\""+ blackInfo.getMobile());
             sb.append("\",");  
             sb.append("\"province\":\""+ blackInfo.getProvince());
             sb.append("\",");  
             sb.append("\"gateway\":\""+ blackInfo.getGateway());
             sb.append("\",");
             sb.append("\"insertTime\":\""+ blackInfo.getInsertTime());
             sb.append("\",");
             sb.append("\"remark\":\""+ blackInfo.getRemark());
             sb.append("\"");
             sb.append("},");
         }
         sb.deleteCharAt(sb.lastIndexOf(","));  // 刪去最後一個逗號
         sb.append("]}");  
         
         HttpServletResponse response = ServletActionContext.getResponse();         
         response.setContentType("text/plain");
         response.getWriter().print(sb);

2.struts.xml相關配置
<action name="blackList" class="blackAction" method="blackList">
    <!--plaintext用於顯示頁面原始程式碼的結果型別-->
    <result type="plainText">
	<param name="charSet">UTF-8</param>
	<param name="location">/WEB-INF/jsp/manage/black.jsp</param>
    </result>
</action>

3.js獲取json資料分頁顯示
function getJSONData(pn) {
	// alert(pn);
	$.getJSON("blackList.ce", function(data) {
		var totalCount = data.totalCount; // 總記錄數
		var pageSize = 10; // 每頁顯示幾條記錄
		var pageTotal = Math.ceil(totalCount / pageSize); // 總頁數
		var startPage = pageSize * (pn - 1);
		var endPage = startPage + pageSize - 1;
		var $ul = $("#json-list");
		$ul.empty();
		for (var i = 0; i < pageSize; i++) {
			$ul.append('<li class="li-tag"></li>');
		}
		var dataRoot = data.jsonRoot;
		if (pageTotal == 1) {     // 當只有一頁時
			for (var j = 0; j < totalCount; j++) {
				$(".li-tag").eq(j).append("<span class='col1'><input type='checkbox' value='"+parseInt(j + 1)+"'/></span>")
				.append("<span class='col2'>" + parseInt(j + 1)
						+ "</span>").append("<span class='col3'>" + dataRoot[j].mobile
						+ "</span>").append("<span class='col4'>" + dataRoot[j].province
						+ "</span>").append("<span class='col5'>" + dataRoot[j].gateway
						+ "</span>").append("<span class='col6'>" + dataRoot[j].insertTime
						+ "</span>").append("<span class='col7'>" + dataRoot[j].remark
						+ "</span>")
			}
		} else {
			for (var j = startPage, k = 0; j < endPage, k < pageSize; j++, k++) {
				if( j == totalCount){
					break;       // 當遍歷到最後一條記錄時,跳出迴圈
				}
				$(".li-tag").eq(k).append("<span class='col1'><input type='checkbox' value='"+parseInt(j + 1)+"'/></span>")
				.append("<span class='col2'>" + parseInt(j + 1)
						+ "</span>").append("<span class='col3'>" + dataRoot[j].mobile
						+ "</span>").append("<span class='col4'>" + dataRoot[j].province
						+ "</span>").append("<span class='col5'>" + dataRoot[j].gateway
						+ "</span>").append("<span class='col6'>" + dataRoot[j].insertTime
						+ "</span>").append("<span class='col7'>" + dataRoot[j].remark
						+ "</span>")
			}
		}
		$(".page-count").text(pageTotal);
	})
}
function getPage() {
	$.getJSON("blackList.ce", function(data) {
				pn = 1;
				var totalCount = data.totalCount; // 總記錄數
				var pageSize = 10; // 每頁顯示幾條記錄
				var pageTotal = Math.ceil(totalCount / pageSize); // 總頁數
				$("#next").click(function() {
							if (pn == pageTotal) {
								alert("後面沒有了");
								pn = pageTotal;
							} else {
								pn++;
								gotoPage(pn);
							}
						});
				$("#prev").click(function() {
							if (pn == 1) {
								alert("前面沒有了");
								pn = 1;
							} else {
								pn--;
								gotoPage(pn);
							}
						})
				$("#firstPage").click(function() {
							pn = 1;
							gotoPage(pn);
						});
				$("#lastPage").click(function() {
							pn = pageTotal;
							gotoPage(pn);
						});
				$("#page-jump").click(function(){
					if($(".page-num").val()  <= pageTotal && $(".page-num").val() != ''){
						pn = $(".page-num").val();
						gotoPage(pn);
					}else{
						alert("您輸入的頁碼有誤!");
						$(".page-num").val('').focus();
					}
				})
				$("#firstPage").trigger("click");
				
			})
}
function gotoPage(pn) {
	// alert(pn);
	$(".current-page").text(pn);
	getJSONData(pn)
}

$(function() {
	getPage();
})