当我尝试在另一个Ajax函数中调用Ajax函数时返回value = undefined

时间:2016-07-04 12:10:57

标签: javascript python ajax

我有一个XML-HTTP-Request函数。不幸的是,当我通过第二个函数 sendPost(wall)调用此函数 getUserdataByToken()< - working时,我没有收回我的DB结果。

我只想在第二个函数中包含返回值(数组),但值总是“未定义”。有人能帮助我吗?

function getUserdataByToken() {

    var token = localStorage.getItem("token");
    var userDataRequest;

    //-AJAX-REQUEST
        var xhttp;
        if (window.XMLHttpRequest) {
            xhttp = new XMLHttpRequest();
        } else {
        // code for IE6, IE5
            xhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        var url= window.location.protocol+"//"+window.location.host+"/getuserdatabytoken";
        var param = "token=" + token;

        xhttp.onreadystatechange = function() {
            if (xhttp.readyState == 4 && xhttp.status == 200) {
                userDataRequest = JSON.parse(xhttp.responseText);

                if (userDataRequest.success === "false") {
                    warningMessage('homeMessage', false, userDataRequest.message);
                } else {
                    return userDataRequest;
                }
            }
        };

        xhttp.open("POST", url, true);
        xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhttp.send(param);
}

通过第二个函数(AJAX)调用函数也导致“userDataRequest”的值“未定义”(返回函数1)。

    function sendPost(wall) {

        var content;
        var token = localStorage.getItem("token");
        var userData = getUserdataByToken(); // PROBLEM

        console.log(userData); // "leads to undefined"
        alert(userData); // "leads to undefined"
… Ajax Call etc…

P.S。这是我在stackoverflow中的第一篇文章,我总是很感激提示。 谢谢!

1 个答案:

答案 0 :(得分:2)

userdata值仅存在于匿名Ajax回调函数中,您只能从那里返回它。这毫无意义,因为它无处可归;当然,价值不会从getUserdataByToken返回。别忘了Ajax调用是异步;当sendPost拨打getUserdataByToken时,请求即使已经完成。

通常情况下,使用像jQuery这样的库会更好。除了使您的代码更简单之外,它还允许您使用Promises等明确旨在解决此类问题的内容。

(而且,你真的需要支持IE5吗?你确定吗?)