javascript - jQuery AJAX post 数据在 C# Web api Controller 中为空

标签 javascript c# jquery ajax

我使用以下调用将数据发送到 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<dynamic>(order);

    return "";
}

Javascript 中的订单对象是一个具有嵌套数组和属性的复杂对象。我得到的数据为空。我不知道如何获取通过 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') },            
    });

关于javascript - jQuery AJAX post 数据在 C# Web api Controller 中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41114888/

相关文章:

c# - 将 List<Expression<Func<T, bool>>> 组合到 OR 子句 LINQ

c# - 在 Visual Studio 中更改下一行执行时的意外后果

jquery - 用 jQuery 在每 6 个 <li> 周围包装 <ul>

javascript - 如何使用 jquery 缓慢地设置 div 的宽度动画

javascript - jQuery 跨域 POST 恶作剧

c# - 自动在表单上安排无限数量的按钮

javascript - 无法可靠地检测 iPhone 纵向和横向模式之间的滚动底部

javascript - 粘性 header 仅适用于桌面设备,不适用于移动设备

javascript - 单击时强制悬停状态辅助元素

javascript - 将对象键及其值推送到数组