jQuery将空数据发布到控制器

时间:2018-02-12 07:53:35

标签: javascript jquery asp.net-mvc

我有一个jQuery向控制器发布数据:

        $.ajax({
            url: "/Api/MyDefaultApi/SaveElections",
            type: "POST",
            data: JSON.stringify(this.state.data),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (resp) {
                showAlert("success", resp);
            }
        }).fail((err) => {
                showAlert("danger", err);
        });

顺便说一下," this.state.data"变量是这样的数组:

[{prop1: "hello", prop2: "world", prop3: "!!"}, {{prop1: "hello1", prop2: "world1", prop3: "!!1"}, {{prop1: "hello2", prop2: "world2", prop3: "!!2"}]

一切似乎都很好,除了这里有两个问题:

  1. 服务器给了我错误的请求'错误400.即使控制器被成功调用。
  2. 在下面的控制器中,'数据'传入的是null。但是,我可以看到' this.state.data'不是空的。

    [System.Web.Http.HttpPost]
    public async Task<IHttpActionResult> SaveElections([FromBody]string[] data) {
    try
    {
        //do something
    }
    catch (Exception ex)
    {
        //something went wrong
    }
    }
    
  3. 如何解决上述2个问题?提前谢谢!

2 个答案:

答案 0 :(得分:0)

在这些类型的错误上,尝试使用静态数据并查看它是否出现:

data: JSON.stringify(["this","is","a","test"]),

并尝试:

data: ["this","is","a","test"],

如果这样可行,则问题出在您的javascript状态对象中。

如果这不起作用。您可以查看chrome开发人员控制台网络选项卡,查看实际发送到服务器的内容。

评论

您的json似乎是array of Objects或c#条array of Dictionary,而您的C#需要Array of Strings

答案 1 :(得分:0)

在发送之前验证您的JSON。

以下是this.state.data对象的外观。

[{
    "prop1": "hello",
    "prop2": "world",
    "prop3": "!!"
},
{
    "prop1": "hello1",
    "prop2": "world1",
    "prop3": "!!1"
},
{
    "prop1": "hello2",
    "prop2": "world2",
    "prop3": "!!2"
}]