我有一个带有XML请求的函数。不幸的是,当我调用这个函数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的返回)。
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…
这是我在这里的第一篇文章,我一直很感激你的贴士。谢谢!
发布于 2016-07-04 12:15:51
userdata值只存在于匿名Ajax回调函数中,您只能从那里返回它。这是没有意义的,因为没有任何地方可以将其返回;当然,该值不会从getUserdataByToken
返回。不要忘记Ajax调用是异步的;当sendPost
调用getUserdataByToken
时,甚至不会发出请求。
通常,在整个过程中使用像jQuery这样的库会好得多。除了使代码变得更简单之外,它还允许您使用承诺之类的东西,这些承诺明确地旨在解决此类问题。
(而且,您真的需要支持IE5吗?你确定吗?)
https://stackoverflow.com/questions/38184463
复制相似问题