困扰了两天的JSON信息返回的问题终于有了答案:
症状,在上传组件完成上传后,返回到客户端的json数据为{success:true, msg:'成功'}.
可是在FF里,这个JSON数据会莫名其妙被一个<pre>标签括了起来,导致客户端无法解析返回的json数据。报错为:
missing } in XML expression
(<pre>{success:true, msg:'成功'}</pre>)... ext-all.js (line 7364)最后查了官方论坛,发现有些人也遇到和我一样的问题,但是网络上基本上没有解决方案,只是最终发现是由于fileUpload属性的特殊机制导致,当fileUpload为true时,formpanel在提交后返回的json数据都会被bug上一个<pre>标签,这个在ff1.5里正常, 2.0以上都会有此BUG, IE6下正常。为解决此BUG,在ext-all.js里修改如下:
{code}
//解决ff里的bug
var temp;
if(json.indexOf('<pre>') != -1){
temp = json.substring(5, json.length-6);
alert("temp = " + temp)
return eval("(" + temp + ')');
}
{code}
于是,IE和FF下均正常。
当有pre标签产生时,去除该标签即可。时间有限,至于为何会产生<pre>标签,待日后研究。
如果您也遇到了与我一样的问题,可能这个方案能帮你解决您的困惑。
本文为原创,雷同者均为抄袭,可以转载作为学习研究或备份所用,本人保留一切权利,转载请注明出处。2009-03-09