今天客户反映IE浏览系统又出问题了,但是在谷歌火狐浏览器下面没问题。没办法,IE下启动调试,出现如下错误提示(为了方便调试,我把jquery未压缩版本替换了服务器的***min.js):
点击跳到源码,下断点,再次查询数据,发现
" var handleValue = '';handleValue = paserResult('false','2":
应该是eval的函数不完整,
在 页面下搜索JS文件,发现“paserResult”是在一个叫lchecking.js 里 :
function initHChecking(params) { $("#tbLChecking").flexigrid( { url : 'platformstat/findLCheckings.action', dataType : 'json', .....(略) { display : '应答结果', name : 'IsResult', paramcolnames : ['IsResult','CheckReturnContent','CheckReturnTime','CheckTime'], handlefunction : 'paserResult', width : 70, sortable : false, align : 'left' }, .....(略) function paserResult(result,CheckReturnContent,CheckReturnTime,CheckTime) { if(CheckReturnContent==""){ return "未应答"; }else{ if(TimeDifference(CheckTime,CheckReturnTime)){ if(result=="true") { return "应答正确"; } else { if(CheckReturnContent == ""){ return ""; }else{ return "应答错误"; } } }else{ return "应答超时"; } } }
原来是引用了flexigrid, 将服务器上的flexigrid.pack.js替换成未压缩版本,找到handlefunction : 继续调试
/* * Flexigrid for jQuery - New Wave Grid * * Copyright (c) 2008 Paulo P. Marinas (webplicity.net/flexigrid) Dual licensed * under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. * * $Date: 2008-07-14 00:09:43 +0800 (Tue, 14 Jul 2008) $ */
发现是多了个特殊字符造成截断了。
var paramcolvalue = data.rows[i][paramcolname];
paramcolvalue = decodeURI(encodeURI(paramcolvalue).replace('%00', '')); (加上这句 )
这样处理之后问题暂时解决了。