Just do IT
Published 2021. 7. 13. 17:37
페이징 - AJAX (1) Programing/기타

페이징에 사용된 Ajax, JavaScript 코드를 분석해보자~!

function Common(){
	this.jsonString = function(params) {
		var myJSONText = JSON.stringify(params, function replacer(key, value) {			
			if (typeof value === 'number' && !isFinite(value)) {		
				return String(value);		
			}		
			return value;
		});
		return myJSONText;
	}
	
	this.getJSON = function(url, method, parameters, successFunc, errorFunc) {
		var ithis = this;
        
		$.ajax({
			type: method,
			url: url,
			data: parameters, 
			dataType: 'text',
			beforeSend: this.beforeSend,
			success: successFunc,
			error: errorFunc,
			complete: this.onCompleteGetJSON
		});
	};
	
	this.getObjectList = function(url, method, params, successFunc, errorFunc) {
		var ithis = this;
		var po = [];
			po.push(params);
			
	this.getJSON(url, method, 
		po.join("&"),
			function(responseData) {
				//Log(responseData);
				successFunc(responseData);
			}, function(xhr, status, error) {
				
				if(xhr.status==302) {
					
				} else if(xhr.status==401) {
					if(window.authMessage == undefined) {
						window.authMessage = 1;
						common.showMessage("권한이 없습니다. 로그인 해주세요.");
						common.goLoginPage();
					}
				}
			}
		);
	};
}

Common function 생성

   getJSON : Controller로 요청할 Ajax functon 생성


function paging(pageNo){
	
var common = new Common();
			
var pageParams = new Object();
	pageParams.pageNo = pageNo;
	pageParams.pageSize = 10;
				
	var po = [];
	po.push("pageParams=" + encodeURIComponent(common.jsonString(pageParams)));			
		
	common.getObjectList("/paging.ajax", "GET", po.join("&"), function(responseData) {
		var resultDatas = jQuery.parseJSON(responseData);				
		var html = "";		
		//var length = resultDatas.items.length;				
		if(resultDatas.items.length != 0){
			for(var i=0; i<resultDatas.items.length; i++){	
				html += '<tr>';
				html += '<td class="board-number">' + resultDatas.items[i].rn + '</td>';
				html += '<td class="board-writer">' + resultDatas.items[i].Fullname + '</td>';
				html += '<td class="board-title">';
				html += '<a href="readPage/' + resultDatas.items[i].idx + '">' + resultDatas.items[i].message + '</a>';
				html += '</td>';
				html += '<td class="board-date">' + resultDatas.items[i].date + '</td>';
				html += '</tr>';	
			}
		}
		$("#boardList").append(html);
		boardPaging(resultDatas.total, dataPerPage, pageCount, pageNo);
	});
}

▼ 아래에 하나씩 정리했습니다.

var common = new Common();

common 에 Common function 생성 및 호출

 

var pageParams = new Object();   
     pageParams.pageNo = pageNo; 
     pageParams.pageSize = 10;

pageParams 객체 생성
pageNo : 페이지 번호를 객체에 담기 (페이지 번호는 pagin function이 호출될 때 정해짐)
pageSize : 페이지 사이즈, 곧 한 페이지에 보여질 리스트 개수(글 갯수)를 객체에 담기

               (고정이기 때문에 직접 지정 가능)

 

var po = [];  
po.push("pageParams=" + encodeURIComponent(common.jsonString(pageParams)));

po 객체 생성

po 객체에 pageParams 객체를 jsonString 형식으로 담기

 

common.getObjectList("/paging.ajax", "GET", po.join("&"), function(responseData) {
	var resultDatas = jQuery.parseJSON(responseData);				
	var html = "";

 

Common function에 있는 getObejctList 호출

Controller로 요청한 URL="/paging.ajax", 요청 방식=GET

function(responseData) Controller로부터 받은 응답을 처리하는 메소드

응답 받은 데이터를 parseJSON으로 변환하여 resultDatas에 담음

빈 문자열인 html 생성

 

if(resultDatas.items.length != 0){
	for(var i=0; i<resultDatas.items.length; i++){

응답받은 객체의 길이(Map, 리스트로 받았기 때문)가 0이 아닐 때,  

응답받은 객체가 null이 아님을 체크하여 0이 아닐때 for문 작동

 

	html += '<tr>';
	html += '<td class="board-number">' + resultDatas.items[i].rn + '</td>';
	html += '<td class="board-writer">' + resultDatas.items[i].Fullname + '</td>';
	html += '<td class="board-title">';
	html += '<a href="readPage/' + resultDatas.items[i].idx + '">' + resultDatas.items[i].message + '</a>';
	html += '</td>';
	html += '<td class="board-date">' + resultDatas.items[i].date + '</td>';
	html += '</tr>';
		}	
	}

빈 문자열인 html에 출력할 리트스 html 양식을 넣어주면 됨

* <table> 태그로 리스트를 작성했기 때문에 html 문자열에 동일하게 <tr><td> 태그 사용

 

$("#boardList").append(html);
	boardPaging(resultDatas.total, dataPerPage, pageCount, pageNo);
});

jsp 혹은 html페이지에서 태그의 id가 boardList인 곳에 해당 html(리스트)를 추가하여 출력

boardPaging 메소드를 호출하며 리스트 페이징 종료

** boardPaging 메소드는 리스트 아래에 페이지를 알려줄 번호를 표시할 메소드입니다.

 

boardPaging 분석하러 가기~

'Programing > 기타' 카테고리의 다른 글

주석의 정의와 종류  (0) 2022.12.05
페이징 - AJAX (2)  (0) 2021.07.16
페이징 - MSSQL  (0) 2021.07.13
Spring - Tiles  (0) 2021.07.09
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!