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

Javascript 将JSON字符串发送到我的后端代码以将其添加到我的数据库中,但它';他没有添加任何内容,javascript,c#,asp.net,json,ajax,Javascript,C#,Asp.net,Json,Ajax,我在这个问题上纠缠了好一阵子 我正试图通过jQuery/AJAX向数据库中添加一个对象。显然,没有错误,但它并没有向我的数据库添加任何内容 这是我的JS/JQuery代码: var student = new Object(); student.Name = $("#txtNameAdd").val(); student.Age = $("#txtAgeAdd").val(); student.Email = $("#txtEmailAdd").val(); $.ajax({ type

我在这个问题上纠缠了好一阵子

我正试图通过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);
    }
最后进入我的类库,在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();
        }
    }
我运行代码,控制台不会记录任何问题,但它也不会做任何事情


我在表单应用程序上运行了非常类似的代码,没有任何问题,所以我现在有点为难。有人知道它为什么一直失败吗?

在model.SaveChanges()之前,您是否尝试将调试器附加到它并验证student对象是否为null

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

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

var student = new Object();
student.Name = $("#txtNameAdd").val();
student.Age = $("#txtAgeAdd").val();
student.Email = $("#txtEmailAdd").val();

$.ajax({
    type: "POST",
    url: "Default.aspx/AddStudent",
    data: student,
    success: function (response) {
        $("#lblSuccessAdd").text("Success!");
        $("#lblSuccessAdd").css("display", "block");
    },
    error: function (response) {
        alert(response.responseJSON);
    }
});
然后您可以指向此WebMethod

[WebMethod]
public static void AddStudent(Student student)
{
    MasterStudent master = new MasterStudent();
    master.AddStudent(student);
}

试试这个。

因此,在发布问题后不久,我确实找到了解决方案,我将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");
    }
});
现在它真的可以工作了!所以无论是数据类型还是内容类型对我的工作都非常重要


谢谢大家的回答

我试着在代码中运行断点,我刚刚意识到一些不可思议的事情,我有一个AJAX代码,它可以工作,并且可以激活我的断点,但是我的add方法没有激活任何东西,所以这里肯定有非常错误的地方。您可以解释他们做错了什么,以及您的代码如何修复问题。您还可以使用四个空格使代码呈现为块。不要在问题中回答您的问题。我们有答案的帖子。
    $.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");
    }
});