如何从javascript函数中获取数据

时间:2012-05-02 03:29:33

标签: javascript jquery javascript-events

我有这个

var myapp;
function Menu($scope){

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

          success: function(data){

          }
        });

}

如何使用功能范围之外的数据。

感谢

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);
          }
        });

}

答案 2 :(得分:0)

创建一个全局变量,为其分配数据,然后使用全局变量。

e.g。

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

bar("test");
alert(foo);