在XmlHttpRequest中使用FormData将数据发布到asp.net核心Web API时出现“ 400错误请求”

西里尔·塞格诺

我有一个使用此操作的ASP.Net Core Web API:

    // POST api/TodoList
    [HttpPost]
    public void Post([FromBody] Tache tache)
    {
       TodoListContext.AjouterTache(tache);
    }

这是Tache实体的代码:

    public class Tache
    {
       public int Id { get; set; }

       [DataType(DataType.MultilineText)]
       [Required, MaxLength(250)]
       public string Description { get; set; }

       [DataType(DataType.Date)]
       public DateTime DateCreation { get; set; }

       [DataType(DataType.Date)]
       public DateTime DateEcheance { get; set; }

       public int Priorite { get; set; }

       public bool Terminee { get; set; }
    }

我使用XHR这样的javascript SPA调用动作:

    function ajouterTache() {
       // Construit un objet Tâche à partir des valeurs saisies
       let tache = {}; 
       tache.id = document.getElementById("idTache").value;
       tache.dateCreation = document.getElementById("dateCreation").value;
       tache.dateEcheance = document.getElementById("dateEcheance").value;
       tache.priorite = document.getElementById("priorite").value;
       tache.terminee = document.getElementById("terminee").checked;
       tache.description = document.getElementById("description").value; 
       console.log(tache);

       // Envoie la tâche à l'API
       const req = new XMLHttpRequest();
       req.onload = function () {
          ...
       };

       req.open('POST', uri, true);
       req.setRequestHeader("Content-Type", "application/json");
       req.send(JSON.stringify(tache));
    }

上面的代码可以正常工作,但是此代码不行:

    function ajouterTache() {
       data = new FormData(document.getElementById("formEdit"));

       // Envoie la tâche à l'API
       const req = new XMLHttpRequest();
       req.onload = function () {
        ...
       };

       req.open('POST', uri, true);
       req.setRequestHeader("Content-Type", "application/json");
       req.send(data);
    }

表单的每个字段都具有正确的名称,已启用并且包含有效输入。

但是我总是得到“ 400:错误的请求”响应。
Firefox的调试工具在XHR结果中显示以下错误:

输入字符串'----------------------------- 18691991225667'是无效数字。路径”,第1行,位置43。title
:发生一个或多个验证错误

我在发送xhr来观看数据对象的内容之前添加了以下代码:

    let formData = new FormData(document.getElementById("formEdit"));
    for (let pair of formData.entries()) {
       console.log(pair[0] + ': ' + pair[1] + ", " + typeof pair[1]);
    }

结果如下:

idTache: 11
dateCreation: 2019-10-08
dateEcheance: 2019-10-22
priorite: 1
terminee: on
description: essai

这似乎是正确的。那么我使用FormData有什么问题呢?

瑞安

如果您想使用来发布数据FormData,则不应将其设置Content-Type为。application/json此外,请在action参数上使用[FromForm]而不是[FromBody]

1.在js代码中删除以下行

req.setRequestHeader("Content-Type", "application/json");

2.使用[FromForm]

[HttpPost]
 public void Post([FromForm] Tache tache)

结果如下:

idTache:11日期创建:2019-10-08日期编辑:2019-10-22优先级:1完成:描述:测试

由于您将数据作为Model Type接收Tache,因此您需要传递一个名为属性,id而不是idTache在日志结果中显示。

您不显示视图代码,建议您将其name="id"用于该输入文本框。

在我的情况下,正确的日志结果为__RequestVerificationToken:,如果使用,也会被删除<form id="formEdit">

id: 11
dateCreation: 2019-10-08
dateEcheance: 2019-10-22
priorite: 1
terminee: on
description: essai
__RequestVerificationToken:xxxxxxxx

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将asp.net核心Web API部署到IIS 7.5时出现500错误

来自分类Dev

400错误的PUT呼叫请求Asp Net Web Api 2.2

来自分类Dev

部署到测试服务器时,POST请求上的ASP.NET Web API“ 400错误请求”

来自分类Dev

ASP.NET - GET 请求上的 API 400 错误

来自分类Dev

使用Pushbullet Ephemerals时出现400(错误请求)错误

来自分类Dev

ASP.Net Web API返回“ 400(错误请求)”。参数太多?

来自分类Dev

发布Json对象时出现400(错误请求)

来自分类Dev

部署到App Engine时出现400错误的请求

来自分类Dev

在Express.js上使用Axios向Spotify API发出POST请求时出现错误400

来自分类Dev

400-在python下使用pushalot api时出现错误请求

来自分类Dev

使用`django.test.client`时出现400错误请求

来自分类Dev

使用AngularJS在Youtube API更新上出现400错误请求

来自分类Dev

尝试使用“ http:// localhost:61961 / Token”登录到Web API。收到400错误的请求错误

来自分类Dev

AWS Dynamo DB作为ASP.NET的会话提供程序出现400错误请求

来自分类Dev

在 ASP.NET Core 中发布 JSON 有效负载时如何修复“错误请求 (400)”错误?

来自分类Dev

发布到Azure Blob存储时非常偶尔出现400错误的请求错误

来自分类Dev

使用php发送GET请求时出现HTTP 400错误请求错误

来自分类Dev

错误请求400从Flutter请求ASP.Net Core 3.0

来自分类Dev

在openshift上将json发布到Flask时出现400错误请求

来自分类Dev

400错误的请求-将JSON数据发布到使用Spring MVC实现的RESTful控制器时

来自分类Dev

从 ASP.Net 核心 Web API 中的后请求在基本控制器中分配值

来自分类Dev

通过HttpURLConnection张贴JSON数据时出现HTTP错误400错误请求

来自分类Dev

从ASP.NET MVC控制器将数据发布到ASP.NET Web API控制器时的待处理请求

来自分类Dev

HTTP 状态 400 – 尝试将日期保存到数据库时出现错误请求

来自分类Dev

使用Jackson JSON Mapper在JSON到POJO之间映射时出现400错误请求

来自分类Dev

无法对 api 执行 POST,使用 fetch 时出现错误 400

来自分类Dev

在JavaScript中使用Google Index API时出现错误请求

来自分类Dev

从Web Api显示数据时出现angular 2错误

来自分类Dev

从Web Api显示数据时出现angular 2错误

Related 相关文章

  1. 1

    将asp.net核心Web API部署到IIS 7.5时出现500错误

  2. 2

    400错误的PUT呼叫请求Asp Net Web Api 2.2

  3. 3

    部署到测试服务器时,POST请求上的ASP.NET Web API“ 400错误请求”

  4. 4

    ASP.NET - GET 请求上的 API 400 错误

  5. 5

    使用Pushbullet Ephemerals时出现400(错误请求)错误

  6. 6

    ASP.Net Web API返回“ 400(错误请求)”。参数太多?

  7. 7

    发布Json对象时出现400(错误请求)

  8. 8

    部署到App Engine时出现400错误的请求

  9. 9

    在Express.js上使用Axios向Spotify API发出POST请求时出现错误400

  10. 10

    400-在python下使用pushalot api时出现错误请求

  11. 11

    使用`django.test.client`时出现400错误请求

  12. 12

    使用AngularJS在Youtube API更新上出现400错误请求

  13. 13

    尝试使用“ http:// localhost:61961 / Token”登录到Web API。收到400错误的请求错误

  14. 14

    AWS Dynamo DB作为ASP.NET的会话提供程序出现400错误请求

  15. 15

    在 ASP.NET Core 中发布 JSON 有效负载时如何修复“错误请求 (400)”错误?

  16. 16

    发布到Azure Blob存储时非常偶尔出现400错误的请求错误

  17. 17

    使用php发送GET请求时出现HTTP 400错误请求错误

  18. 18

    错误请求400从Flutter请求ASP.Net Core 3.0

  19. 19

    在openshift上将json发布到Flask时出现400错误请求

  20. 20

    400错误的请求-将JSON数据发布到使用Spring MVC实现的RESTful控制器时

  21. 21

    从 ASP.Net 核心 Web API 中的后请求在基本控制器中分配值

  22. 22

    通过HttpURLConnection张贴JSON数据时出现HTTP错误400错误请求

  23. 23

    从ASP.NET MVC控制器将数据发布到ASP.NET Web API控制器时的待处理请求

  24. 24

    HTTP 状态 400 – 尝试将日期保存到数据库时出现错误请求

  25. 25

    使用Jackson JSON Mapper在JSON到POJO之间映射时出现400错误请求

  26. 26

    无法对 api 执行 POST,使用 fetch 时出现错误 400

  27. 27

    在JavaScript中使用Google Index API时出现错误请求

  28. 28

    从Web Api显示数据时出现angular 2错误

  29. 29

    从Web Api显示数据时出现angular 2错误

热门标签

归档