首页 > 解决方案 > 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 选项,但没有任何效果。

标签: javascriptjqueryajax

解决方案


你还应该添加 contentType: false

  $.ajax({
        url: "http://localhost:8080/example",
        type: "post",
        data: data,
        processData: false,
        contentType: false,
        success: function (data) {

         }
    });

推荐阅读