0

なぜこれが機能しないのですか?

var names;

$.ajax({
     type : 'POST',
     url : postUrl+"/admin/returnUserJSON",
     success : function(data){
          names = data;
     }
});

console.log(names);

問題: Console.log が undefined を返す。

4

4 に答える 4

6

$.ajax呼び出しは非同期であるため、行が実行されるconsole.logに呼び出されます (サーバーの応答後にのみ呼び出されるコールバック関数の一部であるため)。したがって、出力されます。 names=data$.ajaxundefined

2 つの方法で修正できます。出力をコールバック関数に移動するか...

function(data){
  names = data;
  console.log(names);
}

... または Promise インターフェイスを利用します。

$.ajax({
     type : 'POST',
     url : postUrl+"/admin/returnUserJSON",
     success : function(data){
          names = data;
     }
}).then(function() { console.log(names); });
于 2012-10-22T23:04:03.913 に答える
2

successconsole.log をハンドラーに移動する必要があります。

 success : function(data){
      names = data;
      console.log(names);
 }
于 2012-10-22T23:04:41.430 に答える
2

あなたの AJAX リクエストは、実行されるまでに起動を完了していませんconsole.log

console.logをコールバックに移動するsuccessと、データが正しく取得されます。

var names;

$.ajax({
     type : 'POST',
     url : postUrl+"/admin/returnUserJSON",
     success : function(data){
          names = data;
          console.log(names);
     } 
});

非同期JavaScriptプログラミングについて読むことをお勧めします!

于 2012-10-22T23:05:21.497 に答える
1

ページが既にロードされた後にAJAXリクエストが発生するため、エラーが発生します。変数をコンソールに出力すると、変数は存在しません。

于 2013-01-21T03:21:47.600 に答える