0

私はこのようなことをするよりも問題に遭遇します

var abc = false;
function doSomthing(){
abc = true;
return abc;
}

そしてそれはfalseを返しますが、関数を2回(コンソールで)実行すると、2回目はtrueを返します。

ありがとう

元の機能

var session_id_resualt = false;

function islogdin() {
    if (localStorage.email == undefined) {
        localStorage.email = "";
    }

    if (localStorage.session_id == undefined) {
        localStorage.session_id = "";
    }

    $.post(server + "loginCheck.php", {
        loginCheck: "",
        cookie: readCookie("h"),
        session_id: localStorage.session_id,
        email: localStorage.email
    },

    function (json) {
        json = $.parseJSON(json);
        if (json.logdin) {
            if (json.logdin == "1") {
                //var s_id = json.session_id;
                session_id_resualt = json.session_id;
                //return s_id;          
            } else {
                session_id_resualt = false;
                //  return false;
            }

        } else {
            session_id_resualt = false;
            //  return false;
        }
    });
    return session_id_resualt;

}
4

1 に答える 1

0

$.post非同期です。結果を待つ必要があります。ただし、設定$.postを変更する簡単な方法は提供されていないため、代わりに:を使用する必要があります。$.ajax$.ajaxasync: false

var data = {
    loginCheck: "",
    cookie: readCookie("h"),
    session_id: localStorage.session_id,
    email: localStorage.email
};

var url = server + "loginCheck.php";

var callback = function (json) {
    /* ... */
}

$.ajax({
    type: "POST",
    url: url,
    async: false, /* importan! */
    data: data,
    success: callback,
});

参照:

于 2013-01-10T10:09:59.093 に答える