JQuery.post() ASP.NET 核心 MVC 中的方法

JQuery.post() method in ASP.NET Core MVC

我正在使用 FormData 向我的服务器发送一些数据

submit.click(function (event) {
    event.preventDefault();
    let formData = new FormData();

    //filling data
}

然后我想用$.post()以这种方式将我的表单发送到服务器

$.post('CreateProduct', formData);

但它不起作用,我收到此 异常

否则,当我 post 我的数据与 $.ajax 一起工作时,它完美地工作

$.ajax({
    url: 'CreateProduct',
    data: formData,
    processData: false,
    contentType: false,
    type: 'POST'
});

是否有机会使用 $.post 而不是 $.ajax?我错过了什么吗??

我试过这样改,效果很好

$.post({
    url: 'Submit',
    data: formData,
    processData: false,
    contentType: false
});

有什么改进建议吗?

看来你可能会遇到jQuery添加内容类型header,会导致边界字符串丢失

您必须将 contentType 选项设置为 false 以强制 jQuery 不为您添加 Content-Type header,否则,边界字符串将丢失。此外,您必须将 processData 标志设置为 false,否则,jQuery 将尝试将您的 FormData 转换为字符串,但会失败。

并且我们在ajax中将contentType设置为false,防止JQuery对其进行操作,从而丢失分隔符,导致服务器无法正常解析文件。

像你改变了:

$.ajax({
    url: 'CreateProduct',
    data: formData,
    processData: false,
    contentType: false,
    type: 'POST'
});