Angular $http.post:无法将带有数据的对象发送到服务器。数据作为字符串起作用,作为对象 - 不是
Posted
技术标签:
【中文标题】Angular $http.post:无法将带有数据的对象发送到服务器。数据作为字符串起作用,作为对象 - 不是【英文标题】:Angular $http.post: cannot send objects with data to server. Data as a string works, as an object - not 【发布时间】:2015-10-10 19:16:01 【问题描述】:我想使用这个函数向服务器发送数据:
var _register = function (email, password, passconfirmation)
var data =
"Email": email,
"Password": password,
"ConfirmPassword": passconfirmation
;
return $http.post('/api/Account/Register', data,
headers: 'Content-Type': 'application/x-www-form-urlencoded'
);
它不起作用。我的 ASP.net web api 没有收到任何数据。服务器端的每个变量都是“null”。但是当我这样做时:
var _register = function (email, password, passconfirmation)
var data = "email=" + email + "&password=" + password + "&ConfirmPassword=" + passconfirmation;
return $http.post('/api/Account/Register', data,
headers: 'Content-Type': 'application/x-www-form-urlencoded'
);
一切都很好。问题是:第一种方式比第二种方式清晰得多,所以我想使用第一种方式。但我不知道出了什么问题:/
【问题讨论】:
查看这个答案 (***.com/questions/20226169/…) 【参考方案1】:删除帖子中的标题或更改标题,如下所示
headers: 'Content-Type': 'application/json'
你的代码应该是
var _register = function (email, password, passconfirmation)
var data =
"Email": email,
"Password": password,
"ConfirmPassword": passconfirmation
;
return $http.post('/api/Account/Register', data,
headers: 'Content-Type': 'application/json'
);
【讨论】:
【参考方案2】:我过去曾遇到过这个问题。试试
JSON.stringify(data)
在将其传递给帖子之前。另一边的对象绑定器应该能够接受它。
【讨论】:
【参考方案3】:你需要这样做..
从AngularJS开始,传输数据使用
Content-Type: application/json
return $http.post('/api/Account/Register', 'dataObj' : data ,
headers: 'Content-Type': 'application/json'
);
你的数据应该是一对key/val,试试:
数据变量将在参数dataObj
下到达服务器
【讨论】:
以上是关于Angular $http.post:无法将带有数据的对象发送到服务器。数据作为字符串起作用,作为对象 - 不是的主要内容,如果未能解决你的问题,请参考以下文章
Angular HTTP Post - 无法访问返回值[重复]
如何使用带有表单数据主体而不是 json 主体的 http 'POST'? (Angular2/打字稿)
带有 Windows 身份验证预检问题的 Angular 4 HTTP POST [重复]
Angular 2/4 如何将多个标题添加到 http post
Angular.js $http.post TypeError:无法读取未定义的属性“数据”
在 Angular 11 中,如何通过 API Gateway 将应用程序/json HTTP POST 到 AWS Lambda?