gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:26:38 24 4
gpt4 key购买 nike

我有一个带有 XML-HTTP-Request 的函数。不幸的是,当我调用此函数getUserdataByToken()时,我没有返回我的数据库结果<--通过第二个函数sendPost(wall)工作。

我只想在第二个函数中有返回值(数组),但该值始终是“未定义”。有人可以帮助我吗?

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…

附注这是我在 stackoverflow 上发表的第一篇文章,我总是很感激您的建议。谢谢!

最佳答案

userdata 值仅存在于匿名 Ajax 回调函数中,并且您只能从那里返回它。这是毫无意义的,因为它无处可归;当然,该值不会从 getUserdataByToken 返回。不要忘记 Ajax 调用是异步的;当 sendPost 调用 getUserdataByToken 时,请求甚至不会被发出。

一般来说,使用像 jQuery 这样的库来完成这一切会更好。除了使您的代码更加简单之外,它还允许您使用 Promises 等明确用于解决此类问题的东西。

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

关于javascript - 当我尝试在另一个 Ajax 函数中调用 Ajax 函数时,返回值 = 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38184463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com