You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过jQuery POST向ASP.NET Web API传数组?解决后端识别失败问题

解决ASP.NET Web API无法识别JSON请求体中数组参数的问题

你的问题核心在于前端AJAX请求没有正确告知服务器请求体是JSON格式,加上几个小的代码细节问题,导致后端无法解析数组参数。我帮你梳理下解决方案:

前端代码的关键修正点

  • 修正JSON拼写:原生JS的JSON对象是大写开头的JSON.stringify(),不是Json.stringify()
  • 指定Content-Type:必须告诉服务器请求体是JSON格式,否则ASP.NET Web API会按默认的表单编码解析,识别不了JSON数组
  • 可选:统一数据类型:后端期望的是int[],前端可以直接用数字数组,避免潜在的类型转换问题

修正后的前端代码

var array = [1, 2, 3, 4, 5]; // 直接使用数字数组,若原数据是字符串可转成数字:array.map(Number)
var ids = JSON.stringify(array);
$.ajax({
    type: "POST",
    url: "/api/result",
    data: ids,
    contentType: "application/json; charset=utf-8", // 关键:添加这一行指定请求格式
    success: function (data, state) {
        alert("su...");
    }
});

后端代码确认

你的后端代码其实是没问题的,[FromBody]特性已经正确指定了从请求体获取参数,只要前端请求格式正确,就能正常接收到ids数组。如果还是有异常,可以确认下Web API的JSON格式化配置是否正常(默认情况下ASP.NET Web API已经配置了JSON媒体类型格式化器)。

为什么之前的代码不行?

jQuery的$.ajax默认的contentType是application/x-www-form-urlencoded; charset=UTF-8,这种情况下服务器会尝试把请求体解析成键值对形式,而不是JSON字符串。即使你传了JSON格式的字符串,服务器也无法识别为数组参数。指定contentType为application/json后,服务器才会用JSON格式化器去解析请求体,匹配到后端的int[]参数。

内容的提问来源于stack exchange,提问作者Dongwei Shi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:14:57