在服务器端(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/

10-11 12:00