我在使用rxjs observable ajax发布复杂对象时遇到问题。
updateCashDesck():Observable<SomeModel>{
return Observable.ajax({
body: {id:5,Stocks:[{WarehouseId:5,WarehouseName:"1235"}]},
url:this._apiServerUrl,
method:"POST"
}).map(r=>{
return new SomeModel(r.response);
}).catch((e,r)=>{
console.log(e);
return Observable.throw(e);
});
}
问题在于。当ajax发送请求时,它将content-type设置为:Content-Type:application / x-www-form-urlencoded; charset = UTF-8并请求数据发布为:
Id:5
Stocks:[object Object]
所以我的MVC控制器没有看到股票(股票:数量= 0)。
如何将Observable.ajax中的Content-Type更改为application / json?
答案 0 :(得分:1)
如果查看实施情况,您会发现serializeBody
方法也支持application/json
。
但是,如果未指定application/x-www-form-urlencoded
,则Content-Type
为the default。
因此,您需要明确指定application/json
:
Observable.ajax({
body: { id: 5, Stocks: [{ WarehouseId: 5, WarehouseName: "1235" }] },
headers: { "Content-Type": "application/json" },
url:this._apiServerUrl,
method:"POST"
})