为了账号安全,请及时绑定邮箱和手机立即绑定

将 JSON 字符串发送到我的后端代码以将其添加到我的数据库中,但它没有添加任何内容

将 JSON 字符串发送到我的后端代码以将其添加到我的数据库中,但它没有添加任何内容

C#
守候你守候我 2021-08-29 17:44:34
我已经被这个问题困住了一段时间我正在尝试通过 jQuery/AJAX 向我的数据库添加一个对象。显然,没有错误,但它没有向我的数据库添加任何内容。这是我的 JS/JQuery 代码:var student = new Object();student.Name = $("#txtNameAdd").val();student.Age = $("#txtAgeAdd").val();student.Email = $("#txtEmailAdd").val();$.ajax({    type: "POST",    url: "Default.aspx/AddStudent",    data: "{'studentJSONString':'" + JSON.stringify(student) + "'}",    success: function (response) {        $("#lblSuccessAdd").text("Success!");        $("#lblSuccessAdd").css("display", "block");    },    error: function (response) {        alert(response.responseJSON);    }});我的 JS 代码指向我在 Default.aspx 页面代码中的这段代码:    [WebMethod]    public static void AddStudent(string studentJSONString)    {        JavaScriptSerializer converter = new JavaScriptSerializer();        Student a = converter.Deserialize<Student>(studentJSONString);        WebMethods.AddStudent(a);    }它指向我的 WebMethods.cs 类中的这段代码    [WebMethod]    public static void AddStudent(Student student)    {        MasterStudent master = new MasterStudent();        master.AddStudent(student);    }最后转到我的类库并在 MasterStudent 中使用此方法完成:    public void AddStudent(Student student)    {        if (string.IsNullOrWhiteSpace(student.Name))        {            throw new Exception("There's no name");        }        if (string.IsNullOrWhiteSpace(student.Email))        {            throw new Exception("There's no email");        }        using (studentEntities model = new studentEntities())        {            model.student.Add(student);            model.SaveChanges();        }    }我运行代码,控制台没有记录任何问题,但它也没有做任何事情。我已经在 Forms 应用程序上运行了非常相似的代码,没有出现任何问题,所以我现在有点不知所措。有谁知道为什么它总是失败?
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

所以我在发布我的问题后不久确实找到了解决方案,我将 JQuery AJAX 调用更改为如下所示:


    $.ajax({

    type: "POST",

    url: "Default.aspx/AddStudent",

    data: "{'studentJSONString':'" + JSON.stringify(student) + "'}",

    contentType: "application/json; charset=utf-8",

    dataType: "json",

    success: function (response) {

        $("#lblSuccessAdd").text("Success!");

        $("#lblSuccessAdd").css("display", "block");

    },

    error: function (response) {

        $("#lblErrorAdd").text(response.responseJSON.Message);

        $("#lblErrorAdd").css("display", "block");

    }

});

它现在确实有效!所以无论是 dataType 还是 contentType 对我想要做的事情都非常重要



查看完整回答
反对 回复 2021-08-29
?
FFIVE

TA贡献1797条经验 获得超6个赞

您是否尝试将调试器附加到它并在 model.SaveChanges() 之前验证学生对象不为空?

首先尝试调试并验证学生字符串是否正在转换为实际的学生对象。

如果是,则尝试分析数据库并验证发出的任何命令。


查看完整回答
反对 回复 2021-08-29
  • 3 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信