我有这个
var myapp;
function Menu($scope){
$.ajax({
url: "/user.php",
type: "POST",
success: function(data){
}
});
}
如何使用函数范围之外的数据。
谢谢
我有这个
var myapp;
function Menu($scope){
$.ajax({
url: "/user.php",
type: "POST",
success: function(data){
}
});
}
如何使用函数范围之外的数据。
谢谢
您遇到了麻烦,因为 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);
您可以在需要的范围内创建一个变量,并将数据保存到该变量中。或者您可以调用一个函数并将该数据传递给它。例如:
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);
}
});
}
创建一个全局变量,为其分配数据,然后使用全局变量。
例如
var foo;
function bar(baz) {
foo = baz;
}
bar("test");
alert(foo);