-2

重複の可能性:
AJAX リクエストから値を返すにはどうすればよいですか?

.php ファイルからユーザー名を取得する関数を作成しました

function pobierzLogin()
{
  var myVar= "0";
  $.post("logowanie.php", { "logowanie" : 3 }, function(odp)
  {
    myVar = odp;
  });
  return myVar;
}

myVar は 0 を返しますが、alert(odp); 良い結果を示しています。

4

4 に答える 4

0

これは、リクエストが非同期に発生するためです。リクエストがインターネットに出て戻るまでに時間がかかるため、メソッドが完了するまで 値が設定されません。pobierzLogin

あなたがしていることをする代わりに、リクエストが返されたときに起動したい他のメソッドを定義し、それを へのコールバックで実行します$.post

var whenRequestReturns = function(args){ ...  }

$.post("logowanie.php", { "logowanie" : 3 }, function(odp)
  {
    whenRequestReturns(); // invoke here
  });

または単に次のようなことをします

$.post("logowanie.php", { "logowanie" : 3 }, whenRequestReturns)

于 2012-10-06T20:09:39.107 に答える
0

post as isalert(odp);のコールバック内にある必要があります。$.postasynchronous

変更されたコード:

function pobierzLogin(cb)
{
  var myVar= "0";
  $.post("logowanie.php", { "logowanie" : 3 }, function(odp)
  {
     myVar = odp;
      cb(odp):
   });
   return myVar;
 }
 pobierzLogin(function(myVar ){
   alert(myVar );
});
于 2012-10-06T20:09:43.590 に答える