Javascript 将JSON字符串发送到我的后端代码以将其添加到我的数据库中,但它';他没有添加任何内容
我在这个问题上纠缠了好一阵子 我正试图通过jQuery/AJAX向数据库中添加一个对象。显然,没有错误,但它并没有向我的数据库添加任何内容 这是我的JS/JQuery代码: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
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");
}
});