Javascript 在AngularJS中重写变量
我在$http.post中重写了我的变量mydata。我想知道如何在$http.post之外访问变量mydata。如果我使用console.logmydata;我得到一个未定义的错误 $http.post是一个异步调用。在mydata上调用console.log时,它尚未加载,因此未定义 变量mydata位于控制器作用域中,因为您在其中定义了它,所以您确实可以访问它,只是在调用console.log时,它尚未分配给resp.data['somedata'] 如果在控制台日志周围放置超时,例如setTimeoutfunction{console.logmydata},100您将看到数据 AngularJS$http是异步的,所以当您记录结果时,它还没有被分配 您可以尝试以下方法来处理数据:Javascript 在AngularJS中重写变量,javascript,angularjs,ionic,Javascript,Angularjs,Ionic,我在$http.post中重写了我的变量mydata。我想知道如何在$http.post之外访问变量mydata。如果我使用console.logmydata;我得到一个未定义的错误 $http.post是一个异步调用。在mydata上调用console.log时,它尚未加载,因此未定义 变量mydata位于控制器作用域中,因为您在其中定义了它,所以您确实可以访问它,只是在调用console.log时,它尚未分配给resp.data['somedata'] 如果在控制台日志周围放置超时,例如se
var mySuccessCallback = function(somedata){
//I have my data here!
console.log('Here is my response: ', somedata);
//some awesome functionallity here...
somedata = somedata + 1;
}
var handleMyErrorPlease = function(response){
console.log('Something really bad happened! :( ', response.error);
}
$http.post('http://myurl', myPayload)
.success(mySuccessCallback)
.error(handleMyErrorPlease);
您可以在这里阅读更多内容:您得到的值是未定义的,因为您的ajax正在进行异步调用,这意味着在响应完成之前,不会分配该值。您可以修改$http调用,如下所示:
$http({ url: 'http://example.com',
method: 'POST',
async: false});
这就是异步调用的工作原理…一旦异步调用成功,回调将调用..从回调返回的数据将无法在函数外部访问..因为同步执行确实会先执行外行,然后JavaScript编译器会执行异步调用。请参阅。有没有什么解决方法可以让我的数据不在httppost中?简单地说,你不能,只有在ajax成功的时候你才能得到它。。
$http({ url: 'http://example.com',
method: 'POST',
async: false});