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"中显示但结果未定义.
为什么会这样?
您不需要将调用推迟到$ 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)
| 归档时间: |
|
| 查看次数: |
4760 次 |
| 最近记录: |