【问题标题】:Why am I not getting the AJAX data in an ASP.Net MVC controller?为什么我没有在 ASP.Net MVC 控制器中获取 AJAX 数据?
【发布时间】:2018-06-21 00:34:48
【问题描述】:

我的页面上有这段代码:

polyData = [1.2, 1.3, 1.4];
document.getElementById('sentDiv').innerHTML = JSON.stringify(polyData);

$.post('/Home/updateData', $.param({
  data: JSON.stringify(polyData)
}, true), function(data) {
  $("#dataDiv").html("this is data: " + JSON.stringify(data));
});

这是在我的控制器中:

[HttpPost]
public JsonResult updateData(List<double> polyData)
{
  return Json(polyData);
}

当我进行 AJAX 调用时,我在控制器中的 updateData 被调用,但 polydatanull 并且没有数据通过 AJAX 调用传递给它。我可以在网页(sentData div)上看到polyData 具有有效值。为什么数据没有正确传递?

如何查看控制器接收到的 JSON 消息是什么以及控制器如何尝试将它们提取到 polyData 并调试进程?

【问题讨论】:

  • data:更改为polyData:
  • @RoryMcCrossan 真的吗?我原以为应该是data: polyData?
  • 您可能需要添加[FromBody],如public JsonResult updateData([FromBody] List&lt;double&gt; polyData)
  • @DavidG 那是我的下一行查询 :) 虽然没有收到数据是因为 OP 正在发送名为 data 的参数,但该操作正在等待 polyData
  • @RoryMcCrossan 它有帮助。请把它作为一个答案,我会接受它。我将控制器中的变量名称更改为数据,现在它已被填充。

标签: jquery ajax asp.net-mvc asp.net-mvc-4


【解决方案1】:

问题是因为您的控制器中的操作需要一个名为 polyData 的参数,但您的 AJAX 请求正在发送 data。您只需更改您发送的值的名称:

$.param({
  polyData: JSON.stringify(polyData)
}, true)

另外请注意,您可能还需要 $.paramJSON.stringify 调用,但这取决于您的模型和模型绑定器的结构。

【讨论】:

  • 不是回答先生
  • 阅读上面的 cmets。我对此发表了评论,OP 表示它已解决了该问题并要求我将其发布为答案。
猜你喜欢
  • 2019-02-16
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 2020-09-18
  • 1970-01-01
相关资源
最近更新 更多