私はXML-HTTP-Requestを持つ関数を持っています。残念ながら私はこの関数を呼び出すと私のDB結果を返さない。getUserdataByToken() < - 働いて、2番目の関数を介してsendPost(壁)。他のAjax関数内でAjax関数を呼び出そうとすると戻り値が未定義
2番目の関数の中に戻り値(配列)を入れたいだけですが、値は常に "未定義"です。誰か助けてくれますか?第二の機能(AJAX)を経由して
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);
}
関数呼び出しは "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…
P.S.それは私の最初の投稿stackoverflowで、私は常にヒントに感謝しています。 ありがとう!
非同期呼び出しから戻ることはできません。 XMLHTTPREQUESTは非同期呼び出しです。それは常に定義されていない –
を返します。コールバック関数を現在の関数に渡す必要があります。 –
この文の 'return userDataRequest;'は意味を持ちません。 'sendPost'に置き換えてください。 – ftor