我有這個問題,佔用了我太多的開發時間。我已經研究了這個問題,現在我已經到了這裏。如何從角度打印出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'函數中。 –