Jquery clone功能异常:复制的section表单最后一项POST提交数据丢失
问题排查方向
- 首先检查输入控件的
name属性配置
如果你需要提交多组同类型数据,所有输入的name必须加数组后缀,比如name="link[][emoji]"、name="link[][title]"、name="link[][url]",如果只用普通的同名name="url",PHP默认只会接收最后一组值,逻辑处理不当就会出现最后一组丢失的情况。 - 检查克隆逻辑的输入状态处理
很多人做克隆功能时会把初始隐藏的模板区块里的输入加上disabled属性避免提交空模板,克隆之后忘记给新生成区块的输入移除disabled属性,浏览器默认不会提交disabled状态的输入值,就会出现克隆的区块数据丢包。如果你的触发逻辑是「当前最后一个区块输入时才克隆新的区块」,那么你最后填写的那个区块因为没有触发新的克隆,刚好是唯一没移除disabled属性的,就会出现只有最后一组数据收不到的情况。 - 检查表单提交前的预处理逻辑
如果你写了提交前清空空区块、过滤无效输入的逻辑,检查判断条件是否把最后一个有内容的区块误判为空区块删除了,比如你原本写的「除了最后一个区块之外的空区块删除」逻辑写反,变成了「只删除最后一个区块」。 - 快速验证方法
提交前打开浏览器开发者工具的「网络」标签,找到提交的POST请求,查看「表单数据」部分,如果最后一组数据在请求里都不存在,就是前端的问题;如果请求里有但PHP没拿到,检查PHP的post_max_size配置是否过小,或者表单的enctype配置错误。
内容的提问来源于stack exchange,提问作者Mathew
相关产品推荐
相关产品推荐

