javascript - JQuery:AJAX 请求中的表单数据编码错误
问题描述
我正在尝试使用 JQuery 执行这个简单的 AJAX 请求:
const data = new FormData();
data.append("foo", "bar");
$.ajax({
url: "http://localhost:8080/example",
type: "post",
data: data,
processData: false
});
我检查了 Google Chrome 开发者工具的请求。我看到 Content-type 是application/x-www-form-urlencoded; charset=UTF-8
预期的,但实际数据以多部分编码发送:
------WebKitFormBoundaryEzaaFpNlUo3QpKe1
Content-Disposition: form-data; name: "foo"
bar
------WebKitFormBoundaryEzaaFpNlUo3QpKe1--
当然,我的后端应用程序不期望这样的编码并且失败了。出了什么问题以及如何强制 JQuery 以 urlencoded 格式发送数据?我尝试传递额外的标题或 contentType 选项,但没有任何效果。
解决方案
你还应该添加 contentType: false
$.ajax({
url: "http://localhost:8080/example",
type: "post",
data: data,
processData: false,
contentType: false,
success: function (data) {
}
});
推荐阅读
- javascript - 为每个列表动态过滤列表
- python - 具有多个输出的 TensorFlow val_loss 定义
- if-statement - 如何在 Python 3 中将 INPUT 作为源代码的一部分?
- android - 通知标题中的灰色小图标
- html - 使用 fontawwesome 的 HTML 选择选项中的 CSS 格式
- javascript - JS 中 Promise.all() 和 Promise.allSettled() 的区别?
- ios - 使用 Apple 登录 - 在不显示登录 UI 的情况下验证后续调用(刷新身份验证令牌)
- php - Cakephp2.x(2.10.19) 默认最大日志文件
- css - 拆分 Slick 幻灯片添加自动播放
- excel - Excel 计算满足多个条件的唯一不同值