我试图将JSON数据发送到Api控制器,在该控制器中,HttpPost可以将数据添加到文件中。
JSON档案:
{
"students":
[
{
"Id": 1,
"Name": "Ravi",
"Department": "IT"
},
{
"Id": 2,
"Name": "Raj",
"Department": "hr"
},
{
"Id": 3,
"Name": "avi",
"Department": "it"
},
{
"Id": 0,
"Name": "string",
"Department": "string"
},
{
"Id": 8,
"Name": "tanmay",
"Department": "SDE"
},
{
"Id": 10,
"Name": "test",
"Department": "Dev"
},
{
"Id": 78,
"Name": "abhi",
"Department": "IT"
},
{
"Id": 42,
"Name": "grgr",
"Department": "grgsrgs"
},
{
"Id": 32,
"Name": "wer",
"Department": "new"
},
{
"Id": 450,
"Name": "tan",
"Department": "ted"
}
]}CLass:公共类学生{公共int { get;set;}公共字符串名称{ get;set;}
public string Department { get; set; }
}
public class Students
{
public List<Student> students { get; set; }
} API控制器
[Route("api/[controller]")]
[ApiController]
public class StudentsController : ControllerBase
{
public List<Student> students { get; set; }
[HttpPost]
public IActionResult AddUser(Students _Student)
{
var filePath = @"C:/Users/tanmay_pawar/source/repos/CRUDAPI/CRUDAPI/output.json";
var json = System.IO.File.ReadAllText(filePath);
Students students = JsonConvert.DeserializeObject<Students>(json);
students.students.AddRange(_Student.students);
json = JsonConvert.SerializeObject(students);
System.IO.File.WriteAllText(filePath, json);
return Ok();
}
}jQuery:
oStudent =
{
"students": [
{
Id: $("#st-Id").val(),
Name: $("#st-Name").val(),
Department: $("#st-Department").val()
}
]
}
var postApiUrl = "https://localhost:7018/api/Students"
$.ajax({
url: postApiUrl,
type: 'POST',
data: JSON.stringify(oStudent.students),
contentType: 'application/json',
dataType: 'json',
success: function (msg) {
alert(msg);
}
});我希望将数据从视图发送到我的api控制器,以便api可以将这些数据添加到我的文件中。
我的api运行良好,但是ajax有一些问题,因为它没有向api发送数据。
发布于 2022-09-07 08:04:55
我不知道您的HTML结构是什么,但您可以尝试这样做,以检查AJAX post调用是否正确发送数据。
初始化JSON数据变量,如下所示:
var data = [{ "Id": "1", "Name": "Student name 1","Department":"Dept 1"},
{ "Id": "2", "Name": "Student name 2","Department":"Dept 2"}
];调用AJAX调用:
var postApiUrl = "/api/Students";
$.ajax({
url: postApiUrl,
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
dataType: 'json',
success: function (msg) {
alert(msg);
}
});在您的javascript中,您在提供URL.
的行中也缺少";“分号。
发布于 2022-09-07 08:57:03
您不必在数据变量中使用“JSON.stringify”,请按以下方式更新您的url:
var postApiUrl = "https://localhost:7018/api/Students/AddUser";
$.ajax({
url: postApiUrl,
type: 'POST',
data: {
Id: $("#st-Id").val(),
Name: $("#st-Name").val(),
Department: $("#st-Department").val()
},
contentType: 'application/json',
dataType: 'json',
success: function (msg) {
alert(msg);
}
});此外,此代码还为json数据提供了一种更干净、更精确的方法:https://stackoverflow.com/a/73632045/12645793。
发布于 2022-09-07 11:05:39
问题是,您需要将字符串化、嵌套的学生数组。因为您已经定义了接受Students类作为Action的参数。在Students类中你提到了List<Student>
解析: stringify,主要对象,而不是嵌套对象。
取代
data: JSON.stringify(oStudent.students)与
data: JSON.stringify(oStudent)Ajax调用(文本数据)

动作法

https://stackoverflow.com/questions/73631799
复制相似问题