首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将数据从视图发送到Api控制器

无法将数据从视图发送到Api控制器
EN

Stack Overflow用户
提问于 2022-09-07 07:45:10
回答 3查看 151关注 0票数 0

我试图将JSON数据发送到Api控制器,在该控制器中,HttpPost可以将数据添加到文件中。

JSON档案:

代码语言:javascript
复制
{
"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;}

代码语言:javascript
复制
    public string Department { get; set; }
}
  public class Students
{
    public List<Student> students { get; set; }
}   

API控制器

代码语言:javascript
复制
  [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:

代码语言:javascript
复制
     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发送数据。

EN

回答 3

Stack Overflow用户

发布于 2022-09-07 08:04:55

我不知道您的HTML结构是什么,但您可以尝试这样做,以检查AJAX post调用是否正确发送数据。

初始化JSON数据变量,如下所示:

代码语言:javascript
复制
var data = [{ "Id": "1", "Name": "Student name 1","Department":"Dept 1"},
              { "Id": "2", "Name": "Student name 2","Department":"Dept 2"}
];

调用AJAX调用:

代码语言:javascript
复制
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.

的行中也缺少";“分号。

票数 0
EN

Stack Overflow用户

发布于 2022-09-07 08:57:03

您不必在数据变量中使用“JSON.stringify”,请按以下方式更新您的url:

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2022-09-07 11:05:39

问题是,您需要将字符串化、嵌套的学生数组。因为您已经定义了接受Students类作为Action的参数。在Students类中你提到了List<Student>

解析: stringify,主要对象,而不是嵌套对象。

取代

代码语言:javascript
复制
data: JSON.stringify(oStudent.students)

代码语言:javascript
复制
data: JSON.stringify(oStudent)

Ajax调用(文本数据)

动作法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73631799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档