【发布时间】:2016-07-04 12:10:56
【问题描述】:
我有一个带有 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 上的第一篇文章,我总是很感激提示。 谢谢!
【问题讨论】:
-
您无法从异步调用中返回。 XMLHTTPREQUEST 是一个异步调用。它总是返回 undefined
-
你需要将回调函数传递给当前函数
-
这句话
return userDataRequest;毫无意义。将其替换为sendPost。 -
How do I return the response from an asynchronous call? 上面的链接已经回答了你的问题,我希望如此。
标签: javascript python ajax