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