form表单内容编辑,只提交已经修改的部分,未修改的部分不提交

本文介绍了一种更新接口的设计,强调了名称重复校验功能,展示了如何使用diffDataForm函数比较表单前后变化,并组装提交参数进行API请求。

更新接口做了名称重复校验,只修改状态,会校验名称重复,只能提交修改的字段和id 更新内容

封装对比函数

function diffDataForm(newData, oldData) {
      let result = {} // 报错修改的字段内容
      Object.keys(oldData).forEach(key => {
        if (oldData[key] !== newData[key]) {
          result[key] = newData[key]
        }
      })
      return result
}

编辑表单时,clone一份表单数据

var formData = {
	id: 1,
	name: '名称'
	status: 0
}
var rawData = {...formData}

// 编辑后
formData = {
	id: 1,
	name: '名称',
	status: 1
}

// 获得修改后的数据
var diffData = diffDataForm(formData, rawData)

// 组装提交数据
var params = {
	id: formData.id // id更新必传
	...diffData
}

// 提交修改后的数据
fetch('https://httpbin.org/post', {
	method: 'POST',
	header: { 'Content-Type': 'application/json;chartset=UTF-8' },
	body: JSON.stringify(params)
})
  .then(resp => resp.json())
  .then(res => {
	// do something
	console.log(res)
  })
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值