Angularjs $ http.get不起作用

时间:2014-03-25 18:09:36

标签: javascript asp.net-mvc angularjs http-get

在我的服务器端(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,但没有任何反应。

我终于改变了,在控制台“test”中显示但结果未定义。

为什么会这样?

1 个答案:

答案 0 :(得分:5)

您不需要将您的电话推迟到$ http,因为它已经返回了一个承诺。

回来

return $http.get("/Feed/GetTrenings", { params: { treningId: data } });

然后调用你的函数的任何东西都可以:

getTrenings(myData).then(function(data) { do something }).fail(function() { error });