この質問にはすでに回答していて、私はそれらのいくつかを使っていますが、私は何が間違っているのかまだ分かりません。ajaxの結果を返すにはどうすればいいですか?
基本的に私は、AJAXの成功の結果を返す機能があります:関数を呼び出す
var Functioncalling = function(id){
var Infotoreturn=null;
formdata = {
'id': id
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/pr/servlet',
data: formdata,
contentType: "text/html",
success: function(result){
console.log("1="+result);
Infotoreturn = result;
}
});
console.log("2="+Infotoreturn);
return Infotoreturn;
}
を:
var idreturned = Functioncalling(idvalue);
console.log("3="+idreturned);
は今、私の最初のコンソール出力に私は、私とまったくデータを取得していますそう思う。しかし、2番目と3番目の両方の出力はnullです。
あなたは、非同期リクエストの結果を返すことができません。非同期要求は残りのコードの(同期的な)フローから発生するため、結果を返そうとするまでに要求はまだ解決されていません。約束やjQueryの遅延オブジェクトについて学ぶ必要があります。 – Utkanos
@Utkanosが言っていることに加えて、最後のreturn文は時期尚早です。変数 'Infotoreturn'は、Ajax呼び出しが非同期に、つまり並行して実行されるため、nullになります。主な機能は、操作が完了する前に戻ります。コンソールは結果をログに記録しますが、変数には遅すぎます。 – Manngo
@Manngo変数の早い方を意味します、そうですか? – jaksdfjl