当前位置: 代码迷 >> JavaScript >> extjs fileUpload文件下传时ie报错missing } in XML expression与火狐<pre>有关问题
  详细解决方案

extjs fileUpload文件下传时ie报错missing } in XML expression与火狐<pre>有关问题

热度:224   发布时间:2012-08-29 08:40:14.0
extjs fileUpload文件上传时ie报错missing } in XML expression与火狐<pre>问题

最近在用ext3做一些小东西,用了它是上传控件,遇到了一些问题。记录一下。

对于文件上传来说,需要注意以下几个方面:

  1. FormPanel中设置一个属性【fileUpload : 'true'】;

<!--[if !supportLists]-->2.??? <!--[endif]-->jsp页面中引入FileUploadField.js文件,这个文件的路径是【"${pageContext.request.contextPath}/ux/fileuploadfield/FileUploadField.js"】;

UI组件

相应的ExtJS属性(主要部分)

后台Java Bean属性

xtype : 'fileuploadfield'

需要定义name属性,name : 'xyz'

Struts1/2是不同的,这里以struts2为例。根据情况,需要定义三个属性中的某个或某几个。它们分别是:

File xyz; ---?真正的文件;

String xyzFileName; ---?文件名字;

String xyzContentType; ---?文件类型;

多文件上传时,需要将属性定义为List类型;

这里需要注意的是:文件上传一样受struts的文件上传大小的限制。

?

在调用此方法时会发现json返回值被加上(<pre>{success:true, msg:'成功'}</pre>)

ext-all.js里报错。

IE,fox里都报错,

在网上找了下,有人在改ext-all.js

再上网找了下发现在处理文件里设置Response.ContentType = "text/html";

就不会再报错了 记录下来

上面是网上的一办法,不过我在设置Response.ContentType = "text/html"时,页面会弹出下载文件提示,不知道为什么,最后重写了ext的submit方法

如下:

Ext.override(Ext.form.Action.Submit,{
									    processResponse : function(response){
									        this.response = response;
									        var data = response.responseText;
									        if(data.indexOf('<pre') != -1) {
									          response.responseText = data.substring(data.indexOf("{"), data.indexOf("}")+1);
									          this.response = Ext.util.JSON.decode(response.responseText);
									    	}
									        if(!response.responseText){
									            return true;
									        }

									        return this.result;
									    }
									});
?
1 楼 xieweiting 2012-05-07  
听了楼主的,加了重写ext的submit事件后出现“success为空或不是对象”,请教楼主这是啥原因?
2 楼 cat_rat 2012-05-07  
xieweiting 写道
听了楼主的,加了重写ext的submit事件后出现“success为空或不是对象”,请教楼主这是啥原因?

你看一下返回的json串,看格式是否正确,上面的方法只是把返回的串截取了一下
3 楼 xieweiting 2012-05-09  
cat_rat 写道
xieweiting 写道
听了楼主的,加了重写ext的submit事件后出现“success为空或不是对象”,请教楼主这是啥原因?

你看一下返回的json串,看格式是否正确,上面的方法只是把返回的串截取了一下

哦,是这样啊,我知道了,那在ext-all.js里怎么改啊,我新手,我还是不明白
4 楼 cat_rat 2012-05-09  
xieweiting 写道
cat_rat 写道
xieweiting 写道
听了楼主的,加了重写ext的submit事件后出现“success为空或不是对象”,请教楼主这是啥原因?

你看一下返回的json串,看格式是否正确,上面的方法只是把返回的串截取了一下

哦,是这样啊,我知道了,那在ext-all.js里怎么改啊,我新手,我还是不明白

具体怎么改我记不清了,你在网上找找,应该有,你在js里打个断点,跟进去看看你返回值
5 楼 xieweiting 2012-05-09  
现在已经解决了一半,在IE里面可以正常运行,在FireFox里面依然不能提示是否保存成功
  相关解决方案