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

无法从视图向API控制器发送数据,请求排查Ajax问题

问题分析与解决方案

你的Ajax请求无法正确传递数据到API的核心原因是发送的数据结构与API控制器期望的不匹配,同时存在数据类型转换的潜在问题,以下是具体修复步骤:

1. 修正Ajax发送的数据结构

API的AddUser方法接收的是Students类型对象,该对象需要包含一个名为students的列表字段。而你当前的Ajax代码中,传递的是oStudent.students(直接是学生数组),缺少外层的students包裹,导致模型绑定失败。

修改后的jQuery代码:

oStudent = {
    "students": [   
        {
            // 将Id转为数字类型,匹配实体类的int类型
            Id: parseInt($("#st-Id").val(), 10),
            Name: $("#st-Name").val(),
            Department: $("#st-Department").val()
        }
    ]
}   

var postApiUrl = "https://localhost:7018/api/Students"

$.ajax({
    url: postApiUrl,
    type: 'POST',
    // 传递完整的oStudent对象,而非内部的students数组
    data: JSON.stringify(oStudent),
    contentType: 'application/json',
    dataType: 'json',
    success: function (msg) {
        alert("数据添加成功");
    },
    // 添加错误回调,方便调试请求问题
    error: function(xhr, status, error) {
        console.log("请求错误:", xhr.responseText);
        alert("请求失败,请查看控制台日志");
    }
});

2. 关键修改点说明

  • 数据结构匹配:将JSON.stringify(oStudent.students)改为JSON.stringify(oStudent),确保发送的JSON包含students字段,与API的Students实体类结构完全一致。
  • Id类型转换:使用parseInt将输入框获取的字符串Id转为数字类型,避免因为类型不匹配导致模型绑定失败(实体类中Id是int类型)。
  • 错误回调补充:便于排查请求失败的具体原因(如跨域、模型绑定错误、参数格式问题等)。

3. 额外排查方向

  • 确认前端输入的Id是有效的数字,可添加输入验证避免转换失败。
  • 检查跨域问题:如果前端页面的域名/端口与API不一致,需要在API端配置CORS策略。
  • 在API控制器的AddUser方法开头添加断点或日志,确认是否接收到正确的参数,进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:50:13