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

使用HTML+jQuery调用ASP.NET Core API提交数据到MSSQL参数为空如何解决

问题根因
  • 前端传递的数据格式和声明的contentType不匹配:你代码里valdata是$("#formData").serialize()生成的表单编码格式字符串,但ajax配置里声明的contentType是application/json,后端[FromBody]特性会按照JSON格式解析请求体,格式不匹配导致绑定失败,参数自然为null。
  • 取表单值的时机错误:你在页面刚加载时就执行了serialize()生成valdata,此时用户还没填写表单,拿到的本来就是空值;点击事件里明明拼接了最新的表单JSON对象formData,但完全没有用到。
修复方案

1. 前端jQuery代码修改

直接替换原有脚本为以下内容:

<script type="text/javascript">
    $(document).ready(function () {
        $("#btnsubmit").click(function (e) {
            // 阻止表单默认提交行为
            e.preventDefault();
            // 点击提交时再获取最新表单数据
            let formData = {};
            $("#formData").serializeArray().map((x) => { formData[x.name] = x.value; });
            $.ajax({
                url: "https://localhost:44389/Register",
                contentType: "application/json; charset=utf-8",
                type: 'POST',
                dataType: 'json',
                // 把JSON对象转成JSON字符串传递,不要用原来的valdata
                data: JSON.stringify(formData),
                success: function (data) {
                    alert(data);
                },
                failure: function (data) {
                    alert("Failure: " + data);
                },
                error: function (data) {
                    alert("Error: " + data);
                }
            });
        });
    });
</script>

2. 后端验证项

  • 确认CustmRegistration实体类的所有属性均为public修饰,且包含公开的get、set访问器
  • 确认实体类的属性名称和表单中<input>标签的name属性完全对应,大小写不敏感但建议保持一致
  • 可通过浏览器F12开发者工具的「网络」标签,查看提交的请求负载是否为标准JSON格式,字段是否和实体类匹配
可选替代方案

如果不需要用JSON格式传递,也可以用表单编码方式提交,修改如下:

  • 前端ajax删除contentType配置,data字段直接传$("#formData").serialize()
  • 后端接口方法去掉[FromBody]特性即可正常绑定参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:27:04