jQuery AJAX post数据在c#web api控制器中为null
我使用以下调用将数据发送到c# web api controller
。
$.ajax({ type: "POST", url: "menuApi/menu/Cost", data: JSON.stringify(order), contentType: "application/json", success: function (data) { window.alert('done')}, dataType: 'json' });
服务器端的c# controller
是这样的:
public string Cost([FromBody] string order) { var sOrder = Newtonsoft.Json.JsonConvert.DeserializeObject(order); return ""; }
Javascript中的订单对象是具有嵌套数组和属性的复杂对象。 我将数据作为null。 我不知道怎样才能通过ajax调用发送订单。
编辑:这是我的订单对象
var order = { name:"", id:"", cost:"", details: { sItem:[{name:"",cost:""}], dItem:[{name:"",cost:"", components:[{name:"",quantity:""}]}] } }
知道了,您需要将ajax请求作为带有空参数/表单字段名称的表单数据发布,如下所示:
var order = { name: "", id: "", cost: "", details: { sItem: [{ name: "", cost: "" }], dItem: [{ name: "", cost: "", components: [{ name: "", quantity: "" }] }] } }; $.ajax({ type: "POST", url: "api/Values", data: {'': JSON.stringify(order)} , success: function (data) { window.alert('done') }, });
模型绑定器已经为您完成,无需反序列化。 您只需将参数类型更改为object
或dynamic
。 左边是考虑删除冗余处理:
public string Cost([FromBody] object order) { var sOrder = Newtonsoft.Json.JsonConvert.DeserializeObject(order.ToString()); return ""; }