programing

$.syslog( { async : false } ) 요청이 아직 비동기적으로 실행되고 있습니까?

telebox 2023. 3. 23. 22:37
반응형

$.syslog( { async : false } ) 요청이 아직 비동기적으로 실행되고 있습니까?

여기 작은 문제가 있어요다음 시나리오를 구현하려고 합니다.

  1. 사용자는 홈 페이지를 열고 다른 사용자의 목록을 보고 클릭하여 친구 목록에 추가합니다.
  2. 사용자가 로그인하고 있는지 확인하기 위해 서버 리소스에 Ajax 요청을 발행하고, 로그인하고 있는 경우 다른 서버 리소스에 다른 Ajax 요청을 발행하여 실제로 사용자의 친구 목록에 추가합니다.

간단하게 들리나요?제가 한 일은 다음과 같습니다.함수를 만들었습니다.isLoggedIn사용자가 로그인하고 있는지 여부를 판단하기 위해 서버에 대한 첫 번째 요청을 발행합니다.이 요청은 다음을 사용하여 발행합니다.jQuery.ajax방법.기능은 다음과 같습니다.

function isLoggedIn() {

    $.ajax({
    async: "false",
        type: "GET",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        url: "/isloggedin",
        success: function(jsonData) {
            alert("jsonData =" + jsonData.LoggedIn);
            return jsonData.LoggedIn;
        }
    });
}

반환되는 JSON은 매우 단순하며 다음과 같습니다.

{ LoggedIn: true } or { LoggedIn : false } 

이 방법은 실제로 동작하여 경보를 올바르게 표시합니다.JsonData = true로그인한 경우JsonData = false로그인하지 않은 경우.지금까지는 문제가 없습니다.이 메서드를 호출하려고 하면 문제가 발생합니다.이렇게 부르죠.

$(".friend_set .img").click(function() {
    debugger;
    if (isLoggedIn()) { 

        alert("alredy logged in");
        trackAsync();
        popupNum = 6;
    }
    else {
        alert("not logged in"); //always displays this message.
        popupNum = 1;
    }
    //centering with css

    centerPopup(popupNum);
    //load popup
    loadPopup(popupNum);
    return false;

});

부르기isLoggedIn항상 돌아오다false, 그리고 그것은 반환된다.false before the ajax request finishes (because the messagejsonData = 참is displayed after the message "not logged in". I made sure that the request is **NOT** Asynchronous by stating비동기: false!

그래도 여전히 비동기적으로 작동하고 있는 것 같아요.내가 뭘 놓쳤지?

당신은 필요하다async:false,것은 아니다.async:"false". (예를 들어 부울 패스)false, 문자열이 아닙니다."false").

편집: 비동기 요구에서는 콜 후 을 반환해야 합니다.ajax(성공 핸들러 내부가 아님):

function isLoggedIn() {
    var isLoggedIn;
    $.ajax({
        async: false,
        // ...
        success: function(jsonData) {
            isLoggedIn = jsonData.LoggedIn
        }
    });
    return isLoggedIn 
}

언급URL : https://stackoverflow.com/questions/1531693/ajax-async-false-request-is-still-firing-asynchronously

반응형