我有这个问题,占用了我太多的开发时间。我已经研究了这个问题,现在我已经到了这里。如何从角度打印出GET请求中的信息
我正在通过服务发出GET请求。正在从控制器调用GET请求。
这里是使GET请求的服务,ajaxSrvc.js
:
app.service('ajaxSrvc', ['$log', 'Constants', '$http', '$q',
function($log, Constants, $http, $q) {
this.getAllTasks = function() {
var defer = $q.defer();
var url = 'http://localhost:9998/tasks';
$http.get(url, {cache: 'true'})
.success(function(data) {
defer.resolve(data);
});
return defer.promise;
};
}
]);
即请求从该控制器调用,tasksCtrl.js
:
app.controller('tasksCtrl', ["$log", "$scope", "Constants","$location", "ajaxSrvc",
function($log, $scope, Constants, $location, ajaxSrvc) {
var someData = null;
ajaxSrvc.getAllTasks().then(function(data) {
console.log(data);
someData = data;
});
console.log(someData); // This is printing NULL
}
]);
的问题,当我尝试打印出来someData
出现,它将打印为NULL
,而不是包含来自GET
请求的信息。
我该如何解决这个问题?
我不知道角度,但忽略这一点,你需要等到ajax调用返回。您在请求完成后立即打印它。将日志语句放在回调中。 – mrmcgreg
你的日志语句'console.log(data)'打印出预期的结果吗? – yuxhuang
你不能指望异步调用像你想象的那样以同步方式工作,你可以在ajax调用成功的时候获得数据,这将在'.then'函数中。 –