You need to enable JavaScript to run this app. 使用AJAX发送请求前如何将Form表单数据转换为合法JSON格式
优惠活动
大模型
产品
解决方案
定价
更多

使用AJAX发送请求前如何将Form表单数据转换为合法JSON格式

解决方案

你遇到的报错根本原因是原有工具函数返回的是JavaScript原生对象,而非符合规范的JSON字符串。JS对象字面量允许键不加双引号,但JSON语法强制要求所有键必须用双引号包裹,所以直接将JS对象当做JSON提交会被Spring Boot、JSON校验工具判定为非法。

最简修复方案

不需要修改原有表单数据处理逻辑,仅需在拿到处理后的对象后,调用JS内置的JSON.stringify()方法完成序列化即可得到合法JSON:

用法1:使用时单独序列化(灵活度更高)

var $form = $("#form_data");
// 先拿到JS对象
var formObj = getFormData($form);
// 序列化为合法JSON字符串
var validJson = JSON.stringify(formObj);

用法2:修改工具函数直接返回JSON

function getFormDataAsJson($form){
    var unindexed_array = $form.serializeArray();
    var indexed_array = {};

    $.map(unindexed_array, function(n, i){
        indexed_array[n['name']] = n['value'];
    });
    // 直接返回序列化后的JSON字符串
    return JSON.stringify(indexed_array);
}

额外注意事项

发送AJAX请求时需要指定请求头的Content-Type为application/json,否则Spring Boot依然无法正常解析JSON参数,jQuery AJAX示例如下:

$.ajax({
  url: "/你的后端接口路径",
  type: "POST",
  // 明确指定提交的是JSON格式数据
  contentType: "application/json;charset=utf-8",
  data: getFormDataAsJson($("#form_data")),
  success: function(result) {
    // 处理接口返回结果
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 21:36:03