我有这个
var myapp;
function Menu($scope){
$.ajax({
url: "/user.php",
type: "POST",
success: function(data){
}
});
}
如何使用功能范围之外的数据。
感谢
答案 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);