javascript - Angular 从 MVC JsonResult 获取数据

标签 javascript angularjs asp.net-mvc ngresource angularjs-resource

我的 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 doesn't support primitive response

作为 $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/

相关文章:

javascript - 如何在数组上整体使用 preg_replace

javascript - 未捕获( promise 中)提供的元素不在文档内

javascript - Meteor 发布/订阅独特客户端集合的策略

node.js - 开源 Node.js 项目(MEAN 堆栈)能否在 GPLv3 下获得许可?

css - 如何在 Angular Material Design 中更改 Sidenav 的宽度?

javascript - 在 Knockout 中调用 ajax 后 ViewModel 未更新

javascript - RxJS publishReplay 与 publishLast

javascript - 在 AngularJS 中创建 Promise

javascript - 在另一个页面中显示大型 html 页面?

asp.net - 如果 session 正在使用中,单个 asp.net 用户是否可以一次发出多个请求?