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 回答