<script>
function ArticleDetail__increaseHitCount() {
$.get('../article/doIncreaseHitCountRd', {
id : params.id,
ajaxMode : 'Y'
}, function(data) {
$('.article-detail__hit-count').empty().html(data.data1);
}, 'json');
}
$(function() {
// 실전코드
//ArticleDetail__increaseHitCount();
// 연습코드
setTimeout(ArticleDetail__increaseHitCount, 2000);
})
</script>
$.get()
메소드사용../article/doIncreaseHitCountRd
해당 uri는 이동시 조회수 증가를 시킴$('.article-detail__hit-count').empty().html(data.data1)
:data.data1
로 채움data
는 doIncreaseHitCountRd
uri로 이동시 반환받는 resultData타입의 객체를 json
형식으로 받아옴$(function()
{ ArticleDetailincreaseHitCount() }) : DOM객체가 생성되는 시점에 ```ArticleDetailincreaseHitCount() 실행``` @RequestMapping("/usr/article/doIncreaseHitCountRd")
@ResponseBody
public ResultData<Integer> doIncreaseHitCount(int id){
ResultData<Integer> increaseHitCountRd = articleService.increaseHitCount(id);
if(increaseHitCountRd.isFail()) {
return increaseHitCountRd;
}
int hitCount = articleService.getHitCount(id);
ResultData<Integer> rd = ResultData.newData(increaseHitCountRd, "hitCount", hitCount);
rd.setData2("id",id);
return rd;
}
increaseHitCountRd
: 조회수 증가에대한 결과rd.setData2("id",id)
메소드를 통해 id
를 추가ResultData.class
@Getter
private Object data2;
@Getter
private String data2Name;
~~~ 생략 ~~~
public void setData2(String dataName, Object data) {
data2Name = dataName;
data2 = data;
}
data2 , data2Name
필드 추가setData2
: data2, data2Name을 초기화 하는 메소드 <script>
function ArticleDetail__increaseHitCount() {
const localStorageKey = 'article__' + params.id + '__alreadyView';
if(localStorage.getItem(localStorageKey)){
return;
}
localStorage.setItem(localStorageKey,true);
새로고침시 조회수가 증가
되는 것을 방지 하기위해 로컬스토리지
에 정보를 남김DOM객체가 생성되는 시점에 실행
$(document).ready(function(){});와 동일한 의미
$(document).ready(function(){}); 이것이 jQuery를 사용하기 위한 기본 문법
정확히는 DOM(Document Object Model) 객체가 생성되어 준비되는 시점에서 호출된다는 의미
AJAX 사용 이유는 페이지 전체를 리프레쉬 하지 않고서도 수행 되는 "비동기성"
이러한 비동기성을 통해 사용자의 Event가 있으면 전체 페이지가 아닌 일부분만을 업데이트
할 수 있게 해줌
// 기본 방식
$.ajax({ //jquery ajax
type:"get", //get방식으로 가져오기
url:"data.json", //값을 가져올 경로
dataType:"json", //html, xml, text, script, json, jsonp 등 다양하게 쓸 수 있음
success: function(data){ //요청 성공시 실행될 메서드
console.log("통신성공");
},
error:function(){ //요청 실패시 에러 확인을 위함
console.log("통신에러");
}
})
예시 1
jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
예시 2
// 요청 Url 만 , 리턴 결과값 무시
$.post("http://domain/test/");
// 요청 Url + 추가적으로 보내는 Json Data, 리턴 결과값 무시
$.post("http://domain/test/", { fruit1: "apple", fruit2: "banana" } );
// 요청 Url + 추가적으로 보내는 Array Data, 리턴 결과값 무시
$.post("http://domain/test/", { 'fruits[]': ["apple", "banana"] });
// 요청 Url + 폼데이터, 리턴 결과값 무시
$.post("http://domain/test/", $("#form1").serialize());
// 요청 Url, xml(또는 html)리턴 결과값
$.post("http://domain/test/", function(data) { alert("Data Loaded: " + data); });
// 요청 Url + 추가적으로 보내는 Json Data, 리턴결과값, 결과값 형식
$.post("http://domain/test/", { fruit1: "apple", fruit2: "banana" }, function(data) { process(data); }, "xml" );
// 요청 Url + 추가적으로 보내는 Json Data, 리턴결과값(json 다루는 형식), 결과값 형식
$.post("http://domain/test/", { "func": "getFruits" },
function(data){
console.log(data.fruit1); // apple
console.log(data.fruit2); // banana
}, "json");