0

我在做这样的事情时遇到了问题

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

它返回false,但如果我运行该函数两次(在控制台中),第二次返回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您必须使用$.ajax的设置async: 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 回答