今天在开发一个项目时,前端用的是EXT框架,在开发过程中碰到一个问题:missing } in XML expression。因为本人是用firefox浏览器的插件FireBug做为调试,所就碰上这事。如果不用firefox可能永远碰到着。发现问题咱们就来解决问题。
使用firedebug跟踪了一下返回的数据, 发现responseText中被加上了<pre></pre>标签,但是在IE中没有<pre>标签,问题就出这里。
浏览一下源代码,发现Ext.form.Action.Submit提交请求是用Ext.Ajax组件进行数据传输的. Ext.form.Action.Submit部分源代码如下所示:
引用
1. ...
2. // private
3. run : function(){
4. var o = this.options;
5. var method = this.getMethod();
6. var isGet = method == 'GET';
7. if(o.clientValidation === false || this.form.isValid()){
8. Ext.Ajax.request(Ext.apply(this.createCallback(o), {
9. form:this.form.el.dom,
10. url:this.getUrl(isGet),
11. method: method,
12. headers: o.headers,
13. params:!isGet ? this.getParams() : null,
14. isUpload: this.form.fileUpload
15. }));
16. }else if (o.clientValidation !== false){ // client validation failed
17. this.failureType = Ext.form.Action.CLIENT_INVALID;
18. this.form.afterAction(this, false);
19. }
20. },
21.
22. // private
23. success : function(response){
24. //问题源
25. var result = this.processResponse(response);
26. if(result === true || result.success){
27. this.form.afterAction(this, true);
28. return;
29. }
30. if(result.errors){
31. this.form.markInvalid(result.errors);
32. this.failureType = Ext.form.Action.SERVER_INVALID;
33. }
34. this.form.afterAction(this, false);
35. },
36.
37. processResponse : function(response){
38. this.response = response;
39. if(!response.responseText){
40. return true;
41. }
42. this.result = this.handleResponse(response);
43. return this.result;
44. }
45. ...
因为在processResponse函数处理数据时出现异常,所以就出现了上面碰到的问题.那么怎么解决它呢,重写processResponse方法就OK了.在你所使用的JS中加入如下一段代码就OK了.
引用
1. Ext.override(Ext.form.Action.Submit,{
2. // private
3. processResponse : function(response){
4. this.response = response;
5. //增加下面几句代码就OK啦
6. ////////////////////////
7. var data = response.responseText;
8. if(data.indexOf('<pre>') != -1) {
9. response.responseText = data.substring(5, data.length-6);
10. this.response = Ext.util.JSON.decode(response.responseText);
11. }
12. ///////////////////////////
13. if(!response.responseText){
14. return true;
15. }
16. this.result = this.handleResponse(response);
17. return this.result;
18. }
19. });
分享到:
相关推荐
**EXT开发文档(入门)** EXT是一个基于JavaScript的前端框架,主要用于构建富互联网应用程序(RIA)。它提供了丰富的组件库和强大的数据绑定机制,使得开发者能够创建功能强大的、用户体验优秀的Web应用。本文档将...
EXT IDE是一款专为EXT开发设计的强大集成开发环境(IDE),旨在提供高效、便捷的编码、调试和项目管理功能。EXT是一种基于JavaScript的富客户端应用程序框架,由Sencha公司开发,广泛应用于构建桌面级的Web应用。EXT...
做跨库查询时,前台是用EXT实现的 基本上开始的时候对EXT的了解=0 所以会在这个开发过程中找到一些教程
EXT框架是Web应用程序开发中的一个强大工具,尤其在构建用户界面方面表现卓越。EXT的核心库,ext-core.js,是一个轻量级的JavaScript库,提供了基本的UI组件和数据绑定功能,使得开发者能够创建复杂的交互式网页应用...
EXT源码API开发文档是一份宝贵的资源,适合开发者深入理解EXT的工作原理,优化性能,或者自定义组件。 1. **源码分析**:EXT源码提供了深入学习EXT框架的机会。通过阅读源码,开发者可以了解EXT内部的工作机制,...
Ext&Ext开发指南‘’‘Ext&Ext开发指南’‘’Ext&Ext开发指南‘’‘Ext&Ext开发指南’‘’Ext&Ext开发指南‘’‘Ext&Ext开发指南
Efs 是企业快速开发的UI 层。这个UI 层封装extjs 框架...开发人员可以不用深入掌握Ext框架,只需要开发者编写少量的 html 代码,也可以做出很炫的页面。当然你也可以使用new Ext 的控件渲染到 页面,两者可以混合使用。
《EXT JS中文开发手册》详尽解读与应用指南 **一、EXT JS简介** EXT JS是一种基于JavaScript的开源框架,专为Web应用程序的界面开发而设计。它提供了一套丰富的UI组件,支持复杂的用户交互,并简化了AJAX交互的...
【Liferay Ext开发详解】 Liferay Ext开发是一种高级的定制方式,用于对Liferay Portal进行深度扩展,当Portlet、Hook或Web插件无法满足特定需求时使用。Ext插件允许开发者访问和修改Liferay的内部API,甚至覆盖其...
EXT中文手册是为EXT开发提供帮助的一份详细文档,它主要涵盖了EXT库的各个方面,旨在帮助开发者更好地理解和使用EXT框架进行Web应用开发。EXT是一个基于JavaScript的UI组件库,广泛用于构建富客户端应用,尤其在数据...
EXT开发工具是用于构建Web应用程序的强大框架,尤其在创建数据驱动的富客户端界面时非常有用。EXT提供的组件丰富,能够创建高度交互式的用户界面。在EXT开发过程中,智能提示插件是一个不可或缺的辅助工具,它能提升...
Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发...
Ext 3.0 中文 API 开发文档 直接不打开,不需要部署在服务器上,中文,查看方便,快捷!Ext开发人员必备!
《快意编程:Ext JS Web开发技术详解》是笔者在多年项目开发过程中的经验总结,它通过丰富的实例由浅入深、循序渐进地介绍了目前采用Ext JS进行Web开发的使用方法,从而帮助软件设计人员快速掌握Ext JS开发技术的...
Ext开发所需要的相关文件
在EXT开发环境中,工作区文件可能包含了EXT组件的配置、布局和数据源等信息。 `source`目录很可能是包含源代码的文件夹。如果用户希望深入理解软件的工作原理,或者想要自定义和扩展功能,可以查看这个目录下的内容...
本教程“EXT.NET Web应用程序开发教程2012年英文版”是针对EXT.NET框架的一份详细学习资料,适合对.NET技术有一定基础,并希望深入学习EXT.NET的开发者。 教程内容可能涵盖以下几个方面: 1. **EXT.NET简介**:...
EXT2.2是一种基于JavaScript的前端开发框架,主要用于构建富客户端Web应用。它以其强大的组件化功能、丰富的UI控件和高效的性能而受到开发者们的欢迎。EXT2.2的开发环境搭建是学习EXTJS框架的基础步骤,对于深入理解...