jQuery获取JSON时IE浏览器提示Undefined错误的解决办法

2014-06-24

ajax_jquery_json

我昨天在做一个Java Web项目的时候,发现了一个非常奇怪的问题:某个页面在用jQuery的ajax()方法向服务器端请求JSON数据时,Chrome、FireFox甚至连IE 11都可以拿到数据,可是IE 8却偏偏不行。我用alert()函数显示了一下本应携带JSON数据的变量,我发现该变量的状态竟然是“undefined”。也就是说,是jQuery获取或解析JSON数据时失败了。更奇怪的是,在这个Web系统中恰好还有几个页面也使用了jQuery的ajax()方法,但它们都可以与服务器端正常交互。

为了解决这个“undefined”问题,我用Google搜遍了中英文网站,可惜即使是StackOverflow这样权威的技术网站,也没能解释出其中的原因或者给出一个让人十分信服的解决方案。网友给出的最常见的解决方案是引用一个叫做json2.js的文件,使用其中的JSON.parse( )方法来代替JavaScript的eval( )方法。可是我的项目中明明有一些页面是可以正常工作的,为什么我非得用这个函数来替换呢?出现问题的根源又是什么?所以我不得不自己寻找其中的原因了。

因为出现问题的代码在Chrome等浏览器中是可以正常运行的,所以我们首先可以排除语法错误。那会不会是输出的JSON字符串前后含有空格呢?我用trim( )函数处理掉了输出字符串前后可能存在的空格,可惜问题依然没有解决。排除掉了前两种可能产生错误的情况,那么问题只会在一个地方产生——JSON输出的文件头(Header)部分! 阅读全文 »