0

私はこれを持っています

var myapp;
function Menu($scope){

    $.ajax({
          url: "/user.php",
          type: "POST",

          success: function(data){

          }
        });

}

関数スコープ外のデータを使用するにはどうすればよいですか。

ありがとう

4

3 に答える 3

2

ajax 操作が非同期であるため、問題が発生しています。これは、$.ajaxが呼び出された後、応答がいつ到着するかを正確に制御できないことを意味します。その間、コードは正常に実行され続けます。応答が到着する前に使用しようとすると、応答は空になります。

フレームワークがあなたのMenu関数を呼び出すとコメントで言っているので、どのパラメーターがそれに渡されるかを制御できないと思います。この場合、successコールバック内のデータのみを使用する必要があります。

function Menu($scope){
    $.ajax({
        url: "/user.php",
        type: "POST",
        success: function(data){
            // USE data HERE
        }
    });
}

の呼び出し方法を変更できる場合Menuは、それにコールバック関数を渡して、結果を操作させることができます。

function Menu($scope, ajaxCallback){
    $.ajax({
        url: "/user.php",
        type: "POST",
        success: ajaxCallback
    });
} 
// Define the callback where you will use the data
function processData(data) {
    // USE data HERE
}
// Call Menu passing the callback
Menu(whateverScopeIs, processData);
于 2012-05-02T18:59:13.963 に答える
0

必要なスコープで変数を作成し、その変数にデータを保存できます。または、関数を呼び出してそのデータを渡すこともできます。例えば:

function alertData(data){
  alert(data); // I can use the data here now!
}

var foo;
    $.ajax({
          url: "/user.php",
          type: "POST",

          success: function(data){
           alertData(data);
          }
        });

}
于 2012-05-02T03:31:43.450 に答える
0

グローバル変数を作成し、それにデータを割り当ててから、グローバル変数を使用します。

例えば

var foo;
function bar(baz) {
    foo = baz;
}

bar("test");
alert(foo);
于 2012-05-02T03:34:48.077 に答える