我正在尝试将两个对象发送到web api(ASP.NET),User和House。
最初,我尝试将它们发送为xhr.send(User,House),但我意识到你每个身体只能发送一个物体。
因此,我创建了一个包装类来包含两个对象
var xhr = new XMLHttpRequest();
var url = "api_call";
xhr.open('POST', url);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
var house = JSON.stringify({address : address, zip : zip});
var user = JSON.stringify({Email: email, Password: "aaaAAA1!"});
var wrapper = JSON.stringify({house : house, user : user});
...
xhr.send(wrapper);
但是,当我将json主体发送到api时,数据将数据对象接收为null。
我做错了什么?
前端:
public async System.Threading.Tasks.Task<HttpResponseMessage> ApiCall(Wrapper wrapper)
{
// wrapper.house and wrapper.user is null
House house = wrapper.house;
User user= wrapper.user;
...
}
后端:
{{1}}
答案 0 :(得分:1)
作为评论的对话,
没有stringify
房子和用户,只需要stringify
包装就足够了,所以启动house和user作为对象而不是字符串包装,修正将类似于:
var xhr = new XMLHttpRequest();
var url = "api_call";
xhr.open('POST', url);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
var wrapper = JSON.stringify({house : {address : address, zip : zip}, user : {Email: email, Password: "aaaAAA1!"}});
...
xhr.send(wrapper);