使用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) { // 错误处理逻辑 } });
问题原因说明
- 后端:简单类型参数默认绑定来源是表单、路由或查询字符串,而前端发送的是JSON请求体,必须通过
[FromBody]指定绑定来源。 - 前端:手动拼接JSON字符串可能存在格式缺陷(如转义错误),
JSON.stringify()能保证生成符合规范的JSON数据,避免解析失败。
内容的提问来源于stack exchange,提问作者Asheef
相关产品推荐
相关产品推荐

