【问题标题】:Angularjs $http.get not workingAngularjs $http.get 不工作
【发布时间】:2014-05-03 18:52:22
【问题描述】:

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

当时我已更改为 finally,并在控制台中显示“测试”,但结果未定义。

为什么会这样?

【问题讨论】:

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


    【解决方案1】:

    您无需推迟对 $http 的调用,因为它已经返回了一个承诺。

    直接返回

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

    那么任何调用你的函数的东西都可以做:

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

    【讨论】:

    • 我已经按照您的建议进行了更改,但仍然没有被“解雇”
    • 您是否还添加了一个 fail() 函数来查看是否出现错误?还可以使用 firebug/chrome 中的网络选项卡查看它是否正在发出 HTTP 请求以及响应的样子。
    • Angular 没有问题,但是 .net 出现错误 ObjectContext 实例已被释放,不能再用于需要连接的操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    相关资源
    最近更新 更多