Javascript xhr post body包含两个对象作为一个

时间:2018-05-14 06:37:55

标签: javascript asp.net json xmlhttprequest

我正在尝试将两个对象发送到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}}

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);