본문 바로가기
Error

[Javascript] Ajax 함수 return 값이 'undefined' 경우 해결방법

by GoodDayDeveloper 2024. 1. 4.
반응형

 

보통 프로그램 개발을 하다보면 스크립트 기능을 많이 사용하게 됩니다.

 

여기서 데이터를 호출해서 반환값(return) 을 해 줄 경우에 

반환값이 없는 'undefined' 값이 발생하는 일이 있을 수가 있습니다.

 

그래서 원인과 해결방법에 대해 이야기해보겠습니다.

 

 

 

 

 

 

 

함수 반환값이 'undefined'가 되는 원인

 

 

Ajax 값 호출 변수

 

1
2
3
4
5
6
7
8
9
10
11
12
13
setTimeout(function() {
    for ( var i in jbSplit ) {
      if(jbSplit[i] != ""){
          var checkVal = doGetReelQcLotInfo(jbSplit[i]);
         console.log("return Value : " + checkVal);
          if(checkVal == null) {
              check = false;
              break;
          }
      }
    }
    $.messager.progress("close");
}, 500);
cs

 

 

저는 반복문을 돌리면서 doGetReelQcLotInfo 함수에 파라미터를 넣어서 

checkVal 변수에 값을 할당해주어 

그 할당된 값을 구별하는 로직을 만들어 봤습니다.

 

 

 

Ajax 값 반환 함수

 

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
28
29
30
function doGetReelQcLotInfo(searchLotNo) {
    searchNo = searchNo.replace(/-\s]/g, "");
    var ckVal;
 
    if (searchLotNo != "") {
        $.ajax({
            url : "${pageContext.request.contextPath}/test/list_getInfo.do",
            data : {
                "searchNo" : searchNo
            },
            type : "POST",
            contentType : "application/x-www-form-urlencoded;charset=UTF-8",
            dataType : "json",
            async : false
        }).done(function(result) {
            if (result == null) {
                alert("[ " + searchNo + " ]  정보가 존재하지 않습니다.");
            }
            ckVal = result
            return ckVal;
        }).fail(function(e) {
            alert("[ " + searchNo + " ]  정보 조회 실패 : " + e.statusText);
            ckVal = result
        });
    } else {
        alert("[ " + searchNo + " ]  정보 조회가 실패했습니다.");
        ckVal = result
    }
    
}
cs

 

 

 

 

 

doGetReelQcLotInfo에서 ckVal에 값을 넣어 return 해주었지만

이미지와 같이 'undefined'가 계속해서 발생하였습니다.

이를 해결한 방법을 아래에 정리해보았습니다.

 

 

 

 

함수 반환값이 'undefined' 해결방법

 

 

 

 

 

 

 

 

 

생각보다 단순한 부분입니다.

함수가 아닌 Ajax 로직 내에서 return 값을 선언하였기에 함수의 return은 'undefined' 가 되었던 것 입니다.

그래서 return 값을 Ajax 로직 끝나고 다음 부분에 넣어주면 정상적으로 작동하게 됩니다.

 

 

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
28
29
30
31
function doGetReelQcLotInfo(searchLotNo) {
    searchNo = searchNo.replace(/-\s]/g, "");
    var ckVal;
 
    if (searchLotNo != "") {
        $.ajax({
            url : "${pageContext.request.contextPath}/test/list_getInfo.do",
            data : {
                "searchNo" : searchNo
            },
            type : "POST",
            contentType : "application/x-www-form-urlencoded;charset=UTF-8",
            dataType : "json",
            async : false
        }).done(function(result) {
            if (result == null) {
                alert("[ " + searchNo + " ]  정보가 존재하지 않습니다.");
            }
            ckVal = result
        }).fail(function(e) {
            alert("[ " + searchNo + " ]  정보 조회 실패 : " + e.statusText);
            ckVal = result
        });
    } else {
        alert("[ " + searchNo + " ]  정보 조회가 실패했습니다.");
        ckVal = result
    }
    
    return ckVal;
    
}
cs

 

 

 

 

 

반응형

댓글