ajax를 쓸 때마다 공통되는 옵션 속성들이 있어서 ajax_set이라는 객체를 생성하고,
ajax실행용 함수를 따로 만들어서 그 함수를 실행시키는 방식으로 ajax를 사용하고 있었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
var ajax_set = {
url: "<c:url value='url예시'/>",
param: "",
return_fn:function(data){
if(data == 0){
// 정상 통신
}
else if(data == -1){
// 서버 내부 오류발생
}
},
return_error:function(){
// 서버통신 도중 오류발생
}
};
doAJAX_WSC(ajax_set, true);
|
위처럼 ajax_set 객체를 선언 후에 밑에 있는 doAJAX_WSC 함수를 호출.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
function doAJAX_WSC(ajax_set, _async){ // 파라미터 _async: true이면 비동기, false이면 동기
$.ajax({
type: "POST",
url: ajax_set.url,
data: ajax_set.param,
processData: false,
dataType: 'json',
async: _async,
beforeSend: function(xmlHttpRequest){
xmlHttpRequest.setRequestHeader("AJAX", "true"); // 첫번째 인자("AJAX")헤더의 값를 두번째인자("true")로 셋팅해준다.
},
error: function(e){
if(e.status == 401){ // 인터셉터에서 401을 발생시키고, 받아온다.
return;
}
else{
ajax_set.return_error;
}
},
success: function() {
ajax_set.return_fn;
}
// success:ajax_set.return_fn
});
}
|
그런데 여기서 doAJAX_WSC함수의 success부분을 함수화 시켰더니
ajax_set.return_fn 부분이 무슨짓을 해도 안 되는 일이 발생했다.
주석 처리된 success:ajax_set.return_fn은 아주아주 잘 실행되면서..
한참을 헤매다가 찾아낸 결론이
success:ajax_set.return_fn 일 때는
success에서 바로 ajax_set의 return_fn을 실행시켜, 응답받은 데이터까지 자동으로 바로 넘겨주는 거라 문제가 없었는데
success: function(){} 으로 썼을 때는 응답받은 데이터를 직접 넘겨줘야 했던 것이었다.
그러니까
success: function() {
ajax_set.return_fn;
}
이게 아니라
success: function(data) {
ajax_set.return_fn(data);
}
이런 식으로 직접 데이터를 넘겨줘야 했다..
근거 찾으면 추가로 올려야지
'개발공부 > Spring' 카테고리의 다른 글
(Spring) maven upadte 후 자바 버전이 자꾸 바뀌는 문제 (1) | 2020.02.11 |
---|
댓글