RxJS Observable.ajax将复杂对象发布到MVC

时间:2017-09-12 10:29:54

标签: asp.net-mvc rxjs observable

我在使用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?

1 个答案:

答案 0 :(得分:1)

如果查看实施情况,您会发现serializeBody方法也支持application/json

但是,如果未指定application/x-www-form-urlencoded,则Content-Typethe default

因此,您需要明确指定application/json

Observable.ajax({
    body: { id: 5, Stocks: [{ WarehouseId: 5, WarehouseName: "1235" }] },
    headers: { "Content-Type": "application/json" },
    url:this._apiServerUrl,
    method:"POST"
})