$.fn.serializeObject对为disabled属性的失效

问题现象:

  在查生产tomcat下的localhost日志时,发现今天的记录有不少次都报org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 15005该异常。

问题分析:

  经查异常轨迹看到是某个查询要传的参数为空导致了全表查询,经过反向搜索页面请求入口,定位到了某个页面在进行初始化时在满足条件的情况下会执行此请求到后台;该请求传的参数是进行form表单序列化后得到的处理结果,那么就可以确定了序列化返回的结果内该参数没有值;然后结合页面查看该参数的input内容发现为disabled属性,此时猜测序列化的处理对disabled的失效;那么就看下该序列化参数方法是如何执行的,此js方法是重写了该内容进行了细微处理,大体未变;在循环内加上了页面日志打印,经过操作发现没有打印期望看到的name名称,那么可以进一步确认是上一步的var a = this.serializeArray()此方法返回结果不是所期望的;经过全局搜索该方法查到了jQuery-1.11.1,js此原生js文件内,看完此处的写法后就知道了serializeArray方法内对为disabled属性的进行了过滤,那么所期望的结果里该字段就不会有值了。

问题定论:

  经过上述排查经过,得知js的serializeArray方法会将disabled属性的内容剔除掉,导致$.fn.serializeObject序列化表单参数对象的方法返回的内容也是不含disabled属性的。

调整方式:

  将type为hidden的input内容可以设置为readonly属性。

 

转载于:https://www.cnblogs.com/xStarMoony/p/11345012.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值