ajax 不会将对象数组传递给操作

问题描述

我正在使用 ajax 将 Json 数据传递给 asp.net 核心项目中的操作。 我有一组对象要传递

  var Agentscores = [];
.
.
.
Agentscores.push({
  AgentId: AgentId,Fullname: Fullname,score : score
            });
  $.ajax({
                        type: "POST",url: "/score/SelfReportedscores",contentType: 'application/json; charset=utf-8',//large data must be passed using json
                        data: JSON.stringify(Agentscores),success: function (result) {
                     
                        },error: function (e) {
                        }
                    });

我有一个名为 AgentsListscoreClass.cs 的类,下面是我如何尝试在我的操作中获取数组:

 public void SelfReportedscores([FromBody] List<AgentsListscoreClass> Agentscores)
        {

Agentscores 始终为空。 当我传递字符串列表时没问题,但使用 AgentsListscoreClass 时它始终为空。

public class AgentsListscoreClass
{
    public string AgentId { get; set; }
    public string Fullname { get; set; }
    public short score { get; set; }
}

解决方法

您必须通过删除 contenttype 和 stringify 来修复 ajax 错误

  var agentScores = [];

agentScores.push(
{
  AgentId: AgentId,Fullname: Fullname,Score : Score
   }
);
$.ajax({
  type: "POST",url: "/Score/SelfReportedScores",data: { agentScores },success: function (result) {
  },error: function (e) {
 }
 });

也许您只需要 [FromBody] 作为邮递员。如果您仍然有空值,请尝试将其删除。

,

AgentScores 始终为空。

请在浏览器开发者工具“网络”选项卡中使用发布的数据捕获实际请求,并检查您发布的数据是否如下所示。

enter image description here

并且您的 AgentId 模型的属性 AgentsListScoreClass 被定义为 string 类型,请确保用引号将值括起来,例如 "AgentId":"1"

更新:

AgentScores.push({AgentId: AgentId,Score : Score});

这是数据的样子 'data = "[{"AgentId":"015d6fce-2b6e-4702-b4ac-8af31bba8ffa","Fullname":"name","Score":"0"},{" AgentId":" ......'

您可以尝试使用 parseFloat() 函数解析 Score 数据,如下所示。

AgentScores.push({
    AgentId: AgentId,Score: parseFloat(Score)
});