首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我试图在另一个Ajax-函数中调用Ajax-函数时,返回值=未定义。

当我试图在另一个Ajax-函数中调用Ajax-函数时,返回值=未定义。
EN

Stack Overflow用户
提问于 2016-07-04 12:10:56
回答 1查看 283关注 0票数 0

我有一个带有XML请求的函数。不幸的是,当我调用这个函数getUserdataByToken() <--工作时,通过第二个函数sendPost(wall)无法得到我的DB-结果。

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

代码语言:javascript
运行
复制
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的返回)。

代码语言:javascript
运行
复制
    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…

这是我在这里的第一篇文章,我一直很感激你的贴士。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-04 12:15:51

userdata值只存在于匿名Ajax回调函数中,您只能从那里返回它。这是没有意义的,因为没有任何地方可以将其返回;当然,该值不会从getUserdataByToken返回。不要忘记Ajax调用是异步的;当sendPost调用getUserdataByToken时,甚至不会发出请求。

通常,在整个过程中使用像jQuery这样的库会好得多。除了使代码变得更简单之外,它还允许您使用承诺之类的东西,这些承诺明确地旨在解决此类问题。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38184463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档