我的 MVC Controller 中有以下操作:
[HttpPost]
public JsonResult Save(TestModel model)
{
var newId = _myService.CreateItem(model);
return Json(newId);
}
这会运行并返回一个 ID,我看到它在 Fiddler 中返回,例如 42。但是我的 Angular 代码没有得到数字,但返回值显示为数据:b,其中包含一个 promise 。有没有办法获取成功方法的数据中返回的数字?我的 Angular 代码如下:
vm.save = function () {
TestRepository.save(vm.MyData).$promise.then(
function (data) {
// Here data is returned as data : b, not the number
},
function () {
alert('An error occurred while creating this record.');
});
}
我的服务是
function TestRepository($resource) {
return {
save: function (item) {
return $resource('/mysite/setup/Save').save(item);
}
}
该服务能够调用操作,因为我看到代码到达了我的断点,我可以看到 newId 也设置为 42,但我从未看到它在 Angular 方面返回。
最佳答案
作为 $resource
通常用于连接 RESTFUL 服务,请以格式良好的对象发送数据,所有 API 都是这样做的。以原始类型从 API 发送数据会阻止人们使用不良模式。理想情况下,它应该只返回 JSON
对象。
[HttpPost]
public JsonResult Save(TestModel model)
{
var newId = _myService.CreateItem(model);
return Json(new {Id = newId});
}
代码
vm.save = function () {
TestRepository.save(vm.MyData).$promise.then(
function (data) {
console.log(data.Id)
},
function () {
alert('An error occurred while creating this record.');
}
);
}
关于javascript - Angular 从 MVC JsonResult 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36918449/