关于missing } in XML expression的解决方案

时间:2022-12-06 01:03:01

 困扰了两天的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