【问题标题】:$http.post is sending empty data to RestApi$http.post 正在向 Rest Api 发送空数据
【发布时间】:2014-05-07 10:54:06
【问题描述】:

当我尝试将数据发布到RestAPI 时,我在我的应用程序中使用AngularJS 它发送空数据

这是我的 API 功能

 [HttpPost]
    public string UpdateEmployee(Employees emp)
    {
using (_session = MvcApplication.Store.OpenSession())
        {
            var query = _session.Load<Employees>(emp.Id);
            query.JobTitle = emp.JobTitle;
            query.Name = emp.Name;
            query.Owner = emp.Owner;
            query.Phone = emp.Phone;
            query.SearchedByName = emp.SearchedByName;
            query.CanLogin = emp.CanLogin;
            query.Gender = emp.Gender;
            query.About = emp.About;
            query.Email = emp.Email;
            _session.SaveChanges();
        }
        return emp.Id;
    }

AngularJS 代码:

var updateEmployee = function(emp) {
        var deffered = $q.defer();
        var data = JSON.stringify(emp);
        console.log(emp);
        console.log(data);


   $http({
          method: 'POST',
          url: '/api/Servicesapi/UpdateEmployee/',
          data: emp,
          headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' }
            }).success(
                function() {
                    deffered.resolve();
                })
            .error(
                function() {
                    //Error
                    deffered.reject();
                });
        return deffered.promise;
    };

第一个 console.log(emp) 打印数据,但第二个 console.log(data) 打印空数组 []

API函数在执行上述角度函数但收到Employees的空对象时触发。

console.log(emp)

About: "hello this is about"
Bid: "businesses/129"
CanLogin: true
Email: "abc@yahoo.com"
Gender: "Male"
Id: "employees/193"
JobTitle: "Developer"
Name: "abc"
Owner: true
Phone: "+123456789"
SearchedByName: true
Service: Array[0]
length: 0
__proto__: Array[0]

【问题讨论】:

  • 你的 emp 中有 JSON 数据吗?函数未序列化为 JSON。你能显示 emp 里面是什么吗?
  • 你有错误的内容类型,如果你发送 JSON 它应该是 application/json。
  • 改了类型还是不行
  • 如果我将类型更改为application/json,则对象简单地为空,而如果类型为application/x-www-form-urlencoded则对象为空意味着对象的所有值都包含空
  • 您的 REST 后端是否需要 JSON?

标签: asp.net-mvc angularjs


【解决方案1】:

问题是您已将记录创建为数组并将其用作对象。

var record = [];

使用

var record = {};

【讨论】:

  • 何时使用 [] 以及何时使用 {}
  • @MohsinMustufa [] 是新数组,所以如果您有集合并想使用push() 添加新元素,您将使用 []。如果你添加像foo.x = 10; 这样的新元素,请使用{} 这是新对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 2017-03-03
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 2017-07-05
相关资源
最近更新 更多