javascript - AJAX POST 方法传递给 C# MVC Controller 方法的小问题

标签 javascript c# jquery ajax json

大家好,stackoverflow 的居民们,我已经调试一个讨厌的 ajax POST 方法有点太长了,希望我能得到一些输入。我有一个 JavaScript 函数,它收集一个字符串数组来装箱并发送给我的 Controller 方法,但不幸的是参数数据没有被发送,我不明白为什么。

这是 JS 函数:

$.ajax({
    url: 'CancelDoc',
    method: 'POST',
    datatype: 'json',
    headers: addAntiForgeryHeader(),
    data: { datakeys : DataKeys }
}).done(function (data) {
    if (data.status == 0) {
        alert("DOCUMENT CANCELLED SUCCESSFULLY");
    }
});

澄清一点:

DataKeys 是字符串数组。它已经走到了这一步,这是理所应当的。 看起来像:

["1432long-crazy4297-jumbled5826string|9000|1|1|NEW", 
"1432and2-another03-jumbled1594string|9000|1|1|NEW"]

addAntiForgeryHeader() 是一个额外的客户端验证方法,我将其添加到所有 POST 中。问题不应该出在这里,因为我已经将其注释掉以尝试调用,但它仍然不传递数据。

C# Controller 方法:

注意:代码确实做到了这一点,但 datakeys 参数为 null

public ActionResult CancelDoc(string[] datakeys)
{
    DocObject Doc = new DocObject();
    List<string> Datakeys = datakeys.ToList();

    foreach (var dk in Datakeys)
    {
        ...
        Some model logic here (not even making it here so no worries)
        ...
    }

    return Json(new { status = 0 });
}

我已经尝试过:

  • 通过多种方式将数据转换为 JSON:ko.mapping.toJS(data)、JSON.stringify(data) 以及为此直接写入 JSON 对象。
  • 将调用简化为最基本的形式:我尝试注释掉 datatypeheaders 属性。在我发布之前,它还有更多属性。

非常感谢您的任何意见。

最佳答案

dataKeys 有效负载需要字符串化为:

$.ajax({
    //prev code
    data: { datakeys : JSON.stringify(DataKeys) }
}).done(function (data) {
   //success
});

在 MVC Controller 中,将 json 解析为:

public ActionResult CancelDoc(string[] datakeys)
{ 
    dynamic sourceJson = JsonConvert.DeserializeObject(dataKeys, typeof(object));
    DocObject Doc = new DocObject();
    List<string> Datakeys = sourceJson.ToList();

}

关于javascript - AJAX POST 方法传递给 C# MVC Controller 方法的小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31080867/

相关文章:

javascript - Recorder.js 录制未按预期工作

javascript - 使用 RPC 发送电子邮件 RegEx Javascript

javascript - 有人可以帮我理解下面的代码块吗?

c# - 使用 MVC 自定义身份验证

javascript - onclick 切换类不起作用

javascript - 如果属性不存在,如何默认为空数组 - es6

c# - 过程或函数 ' ' 需要未提供的参数 ' '

c# OpenXML 搜索和替换不保存的文本

javascript - 从 jquery ajax 请求发送数据不起作用

javascript - 如何从下拉列表中删除水平空格?