猿问

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

我已经被这个问题困住了一段时间


我正在尝试通过 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 应用程序上运行了非常相似的代码,没有出现任何问题,所以我现在有点不知所措。有谁知道为什么它总是失败?


守候你守候我
浏览 197回答 3
3回答

富国沪深

所以我在发布我的问题后不久确实找到了解决方案,我将 JQuery AJAX 调用更改为如下所示:&nbsp; &nbsp; $.ajax({&nbsp; &nbsp; type: "POST",&nbsp; &nbsp; url: "Default.aspx/AddStudent",&nbsp; &nbsp; data: "{'studentJSONString':'" + JSON.stringify(student) + "'}",&nbsp; &nbsp; contentType: "application/json; charset=utf-8",&nbsp; &nbsp; dataType: "json",&nbsp; &nbsp; success: function (response) {&nbsp; &nbsp; &nbsp; &nbsp; $("#lblSuccessAdd").text("Success!");&nbsp; &nbsp; &nbsp; &nbsp; $("#lblSuccessAdd").css("display", "block");&nbsp; &nbsp; },&nbsp; &nbsp; error: function (response) {&nbsp; &nbsp; &nbsp; &nbsp; $("#lblErrorAdd").text(response.responseJSON.Message);&nbsp; &nbsp; &nbsp; &nbsp; $("#lblErrorAdd").css("display", "block");&nbsp; &nbsp; }});它现在确实有效!所以无论是 dataType 还是 contentType 对我想要做的事情都非常重要

FFIVE

您是否尝试将调试器附加到它并在 model.SaveChanges() 之前验证学生对象不为空?首先尝试调试并验证学生字符串是否正在转换为实际的学生对象。如果是,则尝试分析数据库并验证发出的任何命令。
随时随地看视频慕课网APP
我要回答