今日一个客户反馈,使用某个功能导入时报“正则表达式错误”,仔细检查了前后台代码,并没有错误,而且其他客户均未出现该问题,经过反复的模拟测试,发现是在IE11中有这个错误,在IE9下正常,锁定代码错误位置为jsp页面上的ajax代码错误。
上代码
ajax调用后台返回的为标准的json字符串
不过detailXml中有特殊字符“<>”,但是在IE9下能正常执行,在IE11下就报正则表达式错误。这应该是IE对数据校验的问题,如果有明确知道该问题的欢迎留言。
经过测试在IE9下带有特殊字符的数据在正常转为json对象以后,仍然可以获取(ss.geidData[0].detailXml)
解决此问题的方法:
一:后台返回数据做处理,将特殊字符去掉
二:前台js解析时,先将特殊字符替换
text = text.replace(/</g,"@lt@").replace(/>/g,"@gt@");
然后在转为json对象即可。
其他特殊字符处理方案相同。