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

使用jQuery调用API时传入的ID值始终为0问题求助

修复jQuery调用API时后端接收ID始终为0的问题

后端代码修改

ASP.NET Core 默认不会从 JSON 请求体中绑定简单类型参数(如long),需要给参数添加[FromBody]特性,明确告知框架从请求体读取数据:

[HttpPost("Delete/")]
public async Task<ActionResult> Delete([FromBody] long Id)
{
    // 业务逻辑代码
}

如果后续需要扩展请求参数,更规范的方式是定义一个DTO类:

public class DeleteRequestDto
{
    public long Id { get; set; }
}

[HttpPost("Delete/")]
public async Task<ActionResult> Delete([FromBody] DeleteRequestDto request)
{
    long targetId = request.Id;
    // 业务逻辑代码
}

前端代码优化

手动拼接JSON字符串容易出现格式错误,建议使用JSON.stringify()序列化对象,确保生成标准的JSON格式:

var Id = 32456;

$.ajax({
    type: "POST",
    url: RetrieveValue('href') + '/API/Delete',
    headers: {
        'Authorization': 'Bearer ' + RetrieveValue("Token"),
    },
    data: JSON.stringify({ Id: Id }),
    async: true,
    cache: false,
    dataType: "json",
    contentType: "application/json",
    success: function (response) { 
        // 成功处理逻辑
    },
    error: function (error) {                    
        // 错误处理逻辑
    }
});

问题原因说明

  1. 后端:简单类型参数默认绑定来源是表单、路由或查询字符串,而前端发送的是JSON请求体,必须通过[FromBody]指定绑定来源。
  2. 前端:手动拼接JSON字符串可能存在格式缺陷(如转义错误),JSON.stringify()能保证生成符合规范的JSON数据,避免解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:15:18