在服务器端(ASP.ne MVC),我有如下方法:
[HttpGet]
public JsonResult GetTrenings(string treningId)
{
var tempId = Guid.Parse(treningId);
var trening = TreningService.GetTreningById(tempId);
_trenings = TreningService.GetAllTreningsForUser(trening.UserId);
return Json(_trenings, JsonRequestBehavior.AllowGet);
}
我有Angular服务:
publicApp.angularModule.factory('feedSingleTreningService', function ($q, $http) {
return {
getTrenings: function (data) {
var input = $http.get("/Feed/GetTrenings", { params: { treningId: data } });
var deferred = $q.defer();
deferred.resolve(input);
return deferred.promise;
},
};
});
在我的控制器中,我将此服务称为:
feedSingleTreningService.getTrenings(data).then(function(results) {
console.log("test", results);
});
但是控制台中什么都没有显示,我已经调试了服务器端,请求到达了它,它返回_trenings,服务也返回了promise,但是什么也没有发生。
我将其更改为最后,并在控制台中显示了“测试”,但结果未定义。
为什么会这样呢?
最佳答案
您不需要将您的呼叫推迟到$ http,因为它已经返回了一个承诺。
刚回来
return $http.get("/Feed/GetTrenings", { params: { treningId: data } });
那么调用您的函数的所有操作都可以做到:
getTrenings(myData).then(function(data) { do something }).fail(function() { error });
关于javascript - AngularJS $ http.get无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22642889/