spring mvc开发中浏览器兼容的奇怪问题

在使用SpringMVC和MyBatis开发OA项目时,作者发现IE浏览器与Firefox在表单提交、特别是文件上传方面存在显著兼容性差异。具体表现为在IE下使用jQuery.form.js插件提交表单时出现类型转换异常,且无法执行回调函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近个人开发一个小的OA项目,属于复习阶段.使用的技术主要是spring mvc作为前端框架,mybatis作为数据库持久化技术.前台使用jquery和一些jquery的插件.
在开发到中间阶段时候发现自己好像忽略了一个小问题,整个项目一直在firefox下测试,没有在IE下测试,不确定是否会出现兼容问题.由于jquery的天生兼容性良好,我就没有过多的关注.在项目接近收尾阶段,我开启了IE测试,不过这次发现确实存在了兼容性问题,而且问题非常严重.
由于为了简便,我在提交表单的操作上采用jquery.form.js,这个组件.它提供了ajaxSubmit这个方法,能够进行异步表单提交,并在提交成功后,执行success函数.我的系统在一个表单页面既有普通的内容,也有file标签,进行文件上传的控制.springmvc的controller中需要写一段这样的代码:
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
这是为了将普通的httprequest转换为spring的request,进而获取文件流等信息.在ajaxSubmit这种提交请求下,firefox下面测试完全正常,能够顺利上传,执行回调函数;但是如果在IE浏览器下面操作,这个位置会进行ClassCast类转换异常,同样也不会执行回调函数.而且,一些表单如果设置为
enctype="multipart/form-data"
这个属性,success回调函数也同样不能执行,而且在spring mvc的controller中,会将会穿页面的json字符串解析为要跳转的页面,不回传给ajax请求.也就说明ajax请求,在IE浏览器下,是不能进行文件上传操作的.
参数传递过程中,在IE浏览器下也会发生乱码,而且火狐下还是正常.根据debug日志分析,是IE下的请求头和firefox下的请求头发生了重大的区别.firefox是application/json,IE的比较长,application/x-Microsoft-....这就导致了,一系列的问题发生.
看来还是浏览器的不兼容导致,而且短时间内也没什么好办法去重构这个问题,只能采用分而治之的情况了,如果不需要上传的页面,还可以继续使用,但是enctype="multipart/form-data"这个属性必须去掉,不然会出现乱码和ajax回调函数不执行的情况.如果确定需要上传的页面,最好还是普通的表单提交,否则不兼容的话,实在没办法.
除了要喷微软对于浏览器的兼容性没有计划之外,这个问题也给我们敲响了一个警钟,测试要尽早做,不要最后做,否则风险很大,而且出现问题无法规避.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值