You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC中$.post()提交FormData失败能否替代$.ajax使用?

问题解答

可以使用$.post()替代$.ajax()实现FormData提交,之前调用失败是因为缺少了两个必要的配置项。

直接调用$.post('CreateProduct', formData)失败的原因:

  • 默认processData参数为true,jQuery会尝试把非字符串类型的请求数据序列化为查询字符串格式,而FormData对象无法被该序列化逻辑处理,会直接抛出类型错误。
  • 默认contentType参数为application/x-www-form-urlencoded; charset=UTF-8,但提交FormData时需要浏览器自动生成带边界值的multipart/form-data请求头,手动设置默认值会导致服务端无法正确解析数据。

可行的$.post()写法

从jQuery 1.9版本开始,$.post支持传入完整的配置对象,和$.ajax的配置规则完全通用,正确写法如下:

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

上述写法和你使用的$.ajax写法效果完全一致,$.post本身就是预先设置了type: 'POST'的$.ajax语法糖,所有$.ajax支持的配置项都可以在$.post中使用。


内容的提问来源于stack exchange,提问作者Eugene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:18:03