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

如何获取Form.io中Data Component的JSON格式数据用于AJAX提交?

在Form.io中获取Data Component的JSON格式数据用于AJAX提交

方法1:使用Form.io内置的getSubmission()方法

Form.io的表单实例自带getSubmission()方法,能直接返回结构化的JSON数据,自动处理Data Component的嵌套字段,不用手动解析data[FirstName]这类格式的键名。

示例代码:

// 假设表单实例已通过Formio.createForm初始化并存储在formioForm变量中
const submissionData = formioForm.getSubmission();

// 将结构化JSON通过AJAX提交到自有服务器
fetch('你的服务器接口地址', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(submissionData),
})
.then(res => res.json())
.catch(err => console.error('提交失败:', err));

返回的submissionData是标准JSON结构,示例如下:

{
  "data": {
    "FirstName": "张三",
    // 其他Data Component字段...
  },
  // 表单元数据...
}

方法2:手动解析表单数据为JSON

如果不想依赖Formio内置方法,可手动遍历表单元素,将data[xxx]格式的字段转换为嵌套JSON:

function parseFormToJson(formEl) {
  const formData = new FormData(formEl);
  const result = { data: {} };
  
  formData.forEach((value, key) => {
    // 匹配data[xxx]格式的键名
    const keyMatch = key.match(/data\[([^\]]+)\]/);
    if (keyMatch) {
      result.data[keyMatch[1]] = value;
    } else {
      // 处理非Data Component的普通字段
      result[key] = value;
    }
  });
  
  return result;
}

// 使用示例
const targetForm = document.getElementById('你的表单ID');
const jsonData = parseFormToJson(targetForm);

// AJAX提交
fetch('你的服务器接口地址', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(jsonData),
});

如果Data Component存在多层嵌套(比如data[User][FirstName]),可扩展上述解析函数处理深层结构,但更推荐方法1——Formio内置方法会自动处理所有组件类型的解析逻辑,避免手动处理的遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:02:05