今天在开发一个项目时,前端用的是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-all-debug.js**: 未压缩且包含调试信息的文件,适合开发阶段使用。 #### 3.2 文件区别 - **ext-all.js**: 已经混淆的完整功能文件。 - **ext-all-debug.js**: 未混淆的完整功能文件,适合调试。 - **ext-...
作者在随笔中提到了两个不同的实现方式,并指出当store作为FormPanel的一部分定义时,下拉框无法自动选中第一行数据,但当store单独定义时,则可以自动选中。 分析可能的原因,这可能是由于store的数据加载时机问题...
2017年存储技术变革与发展的趋势.pdf
毕业论文-qing游戏风格 商业版(GBK)-整站商业源码.zip
实训商业源码-效能-毕业设计.zip
平台跳跃游戏的核心魅力在于重力与控制的精妙平衡。本文将构建角色运动的微分方程模型,解析空中机动算法,并揭示关卡设计中的隐式引力场理论,展现2D平台游戏背后的复杂物理模拟系统。
实训商业源码-签到工具-毕业设计.zip
nsync///////
实训商业源码-票务高级版4.2.9-毕业设计.zip
运算符重载函数(友元函数).cpp
ABAQUS模型定义.pdf
FreeRTOS计数信号量的使用,模拟停车场运行逻辑
毕业论文-方熊表单V1.0.0 开源版-整站商业源码.zip
毕业论文-多商户线下积分商城会员群发V2.5.11 原版-整站商业源码.zip
实训商业源码-新材料-毕业设计.zip
毕业论文-活码自动进群V1.0.0 开源版-整站商业源码.zip
毕业论文-红包拓客生意宝2.0.3 开源版-整站商业源码.zip
Baidunetdisk_AndroidPhone_1023843j (6).apk
【研华科技】以数智融合打造可持续管理的企业未来.pdf
毕业论文-老虎-微信淘宝客6.0.3+老虎-团队合伙人系统2.99.83-整站商业源码.zip