front

javascript function에서 ajax 결과에 따라 return

원코드 2023. 12. 30. 23:36
function check() {
	var isSuccess = false;
	 $.ajax({
		 type: "POST",
			url: "...",
			data: data,
			dataType: "json"
			success: function(result){
				if (result.result == "success") {
					return true;
				} else {
                			return false;
                }
			} 
	 });
}

처음에 이런 식으로 ajax의 success 안에서 return을 했더니, 호출한 곳에서 undefined가 나왔다.

function check() {
	var isSuccess = false;
	 $.ajax({
		 type: "POST",
			url: "...",
			data: data,
			dataType: "json"
			success: function(result){
				if (result.result == "success") {
					isSuccess = true;
				}
			} 
	 });
	 return isSuccess;

}

변수를 선언하고 success에서 값을 설정해도 이 함수를 호출한 곳에서 결과를 출력해보면 무조건 처음에 저장한 false로 나온다.

 

원인은 ajax가 비동기로 움직이기 때문에 success에서 isSuccess = true가 저장되기 전에 isSuccess가 리턴되서 그런것같다. async를 false로 설정해 동기로 작동하게 하면 값이 설정된 후 return 된다

function check() {
	var isSuccess = false;
	 $.ajax({
		 type: "POST",
			url: "...",
			data: data,
           		async: false,  //동기로 설정
			dataType: "json"
			success: function(result){
				if (result.result == "success") {
					isSuccess = true;
				}
			} 
	 });
	 return isSuccess;

}

 

 

 

참고한 블로그

https://chemeez.tistory.com/50

 

[Ajax] ajax success에서 return 하기

function search() { var search_var; $.ajax({ url: "/admin/search_ajax.do", // dataType: "json", type: "post", async: false, data: { param1 : "param1", // POST형식으로 url과 함께 보낼 값1 param2 : "param2", // POST형식으로 url과 함께 보낼

chemeez.tistory.com