当我试图在另一个Ajaxfunction内部调用Ajaxfunction时,返回值=未定义

2024-09-30 00:33:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个XML HTTP请求函数。不幸的是,当我调用这个函数getUserdataByToken()<;--通过第二个函数sendPost(wall)来工作时,我没有返回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的返回)的“未定义”值。在

^{pr2}$

另外,这是我在stackoverflow的第一篇文章,我很感激你的提示。 谢谢!在


Tags: 函数tokenurlnewifvarajaxfunction
1条回答
网友
1楼 · 发布于 2024-09-30 00:33:18

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

一般来说,您最好使用jQuery这样的库来完成整个任务。除了使你的代码更简单外,它还允许你使用像承诺这样的东西来明确地解决这类问题。在

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

相关问题 更多 >

    热门问题