使用 XmlHttpRequest/ajax 发布表单会改变有效负载

贝尔科维奇·阿德里安

我想Post用一种形式Ajax/XMLHttpRequestASP NET Core Controller
如果我只是简单Post的表单,它会在其中获取数据,Controller但是当使用XMLHttpRequest我的model默认字段时

我在我的代码中包含了以下 2 种形式: - 一种形式仅Posts用于属性中url指定的形式,action另一种形式调用 amethodPost-s with XMLHttpRequest

HTML+JS

<!DOCTYPE html>
<html>

<head>
    <script>
        window.submit = function () {
            var form = document.getElementById("delegate-form");
            var data = new FormData(form);
            var xhr = new XMLHttpRequest();

            var content=form.getAttribute('Content-Type');
            var method=form.getAttribute('method');
            var action=form.getAttribute('action');
            xhr.open(method,action);
            xhr.setRequestHeader('Content-Type',content);
            xhr.onload = function () {
                if (xhr.status == 200) {
                    resolve(xhr.response);
                }
                else if (xhr.status != 200) {
                    reject("Failed to submit form with status" + xhr.status);
                }
            }
            xhr.send(data);
        };


    </script>
</head>

<body>
    <div id="Form-without-ajax">
        <form method="POST" enctype="multipart/form-data" action="http://localhost:8300/api/bulk">
            <input type="text" name="Name" value="aa" />
            <input type="text" name="ID" value="13"/>
            <input type="file">
            <br>
            <input style="align-content: flex-end" type="submit" />
        </form>
    </div>
    <br>

    <div id="Form-with-ajax">
        <form method="POST" id="delegate-form" enctype="multipart/form-data" action="http://localhost:8300/api/bulk">
            <input type="text" name="Name" value="ab" />
            <input type="text" name="ID"  value="33"/>
            <input type="file">
            <br>

        </form>
        <button onclick="submit()">Submit with delegate</button>
    </div>

</body>

</html>

模型

 [Serializable]
    public class Data {
        public string Name { get; set; }
        public int ID { get; set; }
        }
    }

.NET 控制器

    [HttpPost]
    [Route("/api/bulk")]
    public async Task TestBulkAsync(Data data) {
        //data has Name=null and id=0 when using the XMLHttpRequest
    }

PS我正在使用multipart/form-data是因为除了该模型之外我还想附加一些文件。而且我需要一个像我这样的处理程序,submit因为我需要在提交表单之前执行其他逻辑。

昆汀
xhr.setRequestHeader('Content-Type',content);

通常,如果您将 FormData 对象传递给 XMLHttpRequest,它将从 FormData 对象生成 Content-Type 标头(这将是具有特定边界属性的多部分请求)。

在这里,您将使用手动确定的内容类型覆盖内容类型……并且省略了边界属性。然后服务器不知道边界在哪里,一切都中断了。

不要覆盖内容类型。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用jQuery发布Json时,发布的数据与有效负载不同吗?

来自分类Dev

使用onErrorResume使用Reactor Kafka处理发布到Kafka的有问题的有效负载

来自分类Dev

通过使用scrapy中的请求有效负载来发布请求

来自分类Dev

使用 AngularJs 和 PHP 发布有效负载并接收响应

来自分类Dev

使用有效负载创建操作

来自分类Dev

使用正则表达式提取值表单JSON有效负载

来自分类Dev

使用正则表达式提取值表单JSON有效负载

来自分类Dev

使用Restangular使用有效负载进行PUT / GET

来自分类Dev

为什么使用common和post更改ContentType的差异会影响请求有效负载/表单数据?

来自分类Dev

推送通知使用有效负载打开正确的页面

来自分类Dev

使用nfqueue / scapy更改TCP有效负载

来自分类Dev

在POST有效负载中使用环境变量

来自分类Dev

使用apigee代理返回大有效负载

来自分类Dev

使用PHP转换WooCommerce Webhook有效负载

来自分类Dev

使用放心创建动态xml有效负载

来自分类Dev

何时使用setxy改变乌龟的坐标有效?

来自分类Dev

在WSO2 ESB 4.9.0中使用有效负载工厂生成JavaScript有效负载

来自分类Dev

在发布PubNub聊天消息有效负载时,推送通知正在接收,但是后台获取未使用pn_apns标签调用

来自分类Dev

如何使用行内的表单创建HTML有效表

来自分类Dev

如何使用行内的表单创建HTML有效表

来自分类Dev

使用div代替表单标签是否有效?

来自分类Dev

如何使用带有DRF序列化程序的camelCase属性生成有效负载

来自分类Dev

带有 JSON 有效负载正文的 HTTP 帖子,其中包含使用 cURL 的空行

来自分类Dev

使用Spark结构化流(pyspark)从Kafka Connect JSONConverter消息中提取“有效负载”(模式和有效负载)

来自分类Dev

赋值会改变变量的有效类型吗?

来自分类Dev

setuid 标志不会改变有效的用户 ID

来自分类Dev

iOS-APNS如何在有效负载中使用loc_key

来自分类Dev

如何在加密的有效负载之前添加未加密的帧头(使用Sslstream)

来自分类Dev

如何在Elm中使用需要有效负载的消息创建任务?

Related 相关文章

  1. 1

    使用jQuery发布Json时,发布的数据与有效负载不同吗?

  2. 2

    使用onErrorResume使用Reactor Kafka处理发布到Kafka的有问题的有效负载

  3. 3

    通过使用scrapy中的请求有效负载来发布请求

  4. 4

    使用 AngularJs 和 PHP 发布有效负载并接收响应

  5. 5

    使用有效负载创建操作

  6. 6

    使用正则表达式提取值表单JSON有效负载

  7. 7

    使用正则表达式提取值表单JSON有效负载

  8. 8

    使用Restangular使用有效负载进行PUT / GET

  9. 9

    为什么使用common和post更改ContentType的差异会影响请求有效负载/表单数据?

  10. 10

    推送通知使用有效负载打开正确的页面

  11. 11

    使用nfqueue / scapy更改TCP有效负载

  12. 12

    在POST有效负载中使用环境变量

  13. 13

    使用apigee代理返回大有效负载

  14. 14

    使用PHP转换WooCommerce Webhook有效负载

  15. 15

    使用放心创建动态xml有效负载

  16. 16

    何时使用setxy改变乌龟的坐标有效?

  17. 17

    在WSO2 ESB 4.9.0中使用有效负载工厂生成JavaScript有效负载

  18. 18

    在发布PubNub聊天消息有效负载时,推送通知正在接收,但是后台获取未使用pn_apns标签调用

  19. 19

    如何使用行内的表单创建HTML有效表

  20. 20

    如何使用行内的表单创建HTML有效表

  21. 21

    使用div代替表单标签是否有效?

  22. 22

    如何使用带有DRF序列化程序的camelCase属性生成有效负载

  23. 23

    带有 JSON 有效负载正文的 HTTP 帖子,其中包含使用 cURL 的空行

  24. 24

    使用Spark结构化流(pyspark)从Kafka Connect JSONConverter消息中提取“有效负载”(模式和有效负载)

  25. 25

    赋值会改变变量的有效类型吗?

  26. 26

    setuid 标志不会改变有效的用户 ID

  27. 27

    iOS-APNS如何在有效负载中使用loc_key

  28. 28

    如何在加密的有效负载之前添加未加密的帧头(使用Sslstream)

  29. 29

    如何在Elm中使用需要有效负载的消息创建任务?

热门标签

归档