Angularjs $ http.get不起作用

hyp*_*erN 0 javascript asp.net-mvc http-get angularjs

在我的服务器端(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);

    }
Run Code Online (Sandbox Code Playgroud)

我有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;
    },

};
});
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我将此服务称为:

 feedSingleTreningService.getTrenings(data).then(function(results) {
        console.log("test", results);
    });
Run Code Online (Sandbox Code Playgroud)

但是在控制台中没有显示任何内容,我调试了服务器端并请求到达它,它返回_trenings,服务也返回promise,但没有任何反应.

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

为什么会这样?

Mat*_*ggi 5

您不需要将调用推迟到$ http,因为它已经返回了一个promise.

回来吧

return $http.get("/Feed/GetTrenings", { params: { treningId: data } });
Run Code Online (Sandbox Code Playgroud)

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

getTrenings(myData).then(function(data) { do something }).fail(function() { error });
Run Code Online (Sandbox Code Playgroud)

  • 你是否添加了fail()函数以查看是否收到错误?还可以使用firebug/chrome中的网络选项卡查看它是否正在发出HTTP请求以及响应的样子. (2认同)