アヤックスにAJAX結果を保存することができますどのように
は、コードが同時に実行されているものの結果を見つけるためにすることを意味し、非同期であるコンソールログ値がコンソールログに記録されるまでに結果が設定されていないため、結果が未定義になっています。
私が知っている唯一の方法は、ajaxの成功関数内で行うか、コンソールログを含む後続の関数をajax success関数で呼び出すことです。コンソールにログオンする前に値が返されていることを確認する唯一の方法です。
例:
例1:
var result;
$.ajax({
url: "person.html",
success: function(data){
result=data;
console.log(result);
//Note that in this instance using the variable 'result' is redundant, as you could simply console.log data like you're already doing.
}
});
例2:それはすべてをあなたに結果をやりたいと思っているどのくらいに依存
var result;
$.ajax({
url: "person.html",
success: function(data){
result=data;
subsequentFunction(result);
}
});
function subsequentFunction(result){
console.log(result)
}
// Note that if you're doing something simple with result that this could be a bit long winded and unnecessary.
どのオプションだろうにより良くなる。
注: 'async'と呼ばれるajax呼び出しのプロパティもあります。これをfalseに設定すると同期させることができますが、これは他のコードが実行されるのを防ぐため一般的に悪い考えです。結果が返され、ブラウザがロックされます。あなたのコードは、応答を受け取るために起こっている知っているが、それは外部ソースに依存しますので、この応答はで来るとき、それは知っていないことを意味し、約束を返しアヤックス
'は'にconsole.log(結果)ので、 'result = data'の前で実行してください – George
可能な重複http:// stackoverflow。com/questions/23667086/my-variable-un-changed-in-a-function-asyncの中で –
[非同期呼び出しからの応答を返すにはどうすればいいですか?] (http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Maxx