`
timen_zbt
  • 浏览: 76782 次
社区版块
存档分类
最新评论

ExtJs4.x 上传文件 upload filetext TypeError:result is undefined解决

阅读更多

Extjs4上传文件时返回Json数据,导致TypeError:result is undefined错误

 

Ext.create('Ext.form.Panel', {

    title: 'Upload a Photo',

    width: 400,

    bodyPadding: 10,

    frame: true,

    renderTo: Ext.getBody(),

    items: [{

        xtype: 'filefield',

        name: 'photo',

        fieldLabel: 'Photo',

        labelWidth: 50,

        msgTarget: 'side',

        allowBlank: false,

        anchor: '100%',

        buttonText: 'Select Photo...'

    }],

 

    buttons: [{

        text: 'Upload',

        handler: function() {

            var form = this.up('form').getForm();

            if(form.isValid()){

                form.submit({

                    url: 'photo-upload.php',

                    waitMsg: 'Uploading your photo...',

                    success: function(fp, o) {

                        Ext.Msg.alert('Success', 'Your photo "' + o.result.file + '" has been uploaded.');

                    }

                });

            }

        }

    }]

});

 

这个提交会导致Request Headers改变,Accept属性,表示不接收application/json的数据,这个会在Chrome上执行但是会出提示,在FireFox上根本执行不了,并且报TypeError:result is undefined错误

 

请阅读:

Ext.data.Connection中的一段文字,关于fileupload

File Uploads

File uploads are not performed using normal "Ajax" techniques, that is they are not performed using XMLHttpRequests. Instead the form is submitted in the standard manner with the DOM <form> element temporarily modified to have its target set to refer to a dynamically generated, hidden <iframe> which is inserted into the document but removed after the return data has been gathered.

The server response is parsed by the browser to create the document for the IFRAME. If the server is using JSON to send the return object, then the Content-Type header must be set to "text/html" in order to tell the browser to insert the text unchanged into the document body.

Characters which are significant to an HTML parser must be sent as HTML entities, so encode < as &lt;& as &amp; etc.

The response text is retrieved from the document, and a fake XMLHttpRequest object is created containing a responseText property in order to conform to the requirements of event handlers and callbacks.

Be aware that file upload packets are sent with the content type multipart/form and some server technologies (notably JEE) may require some custom processing in order to retrieve parameter names and parameter values from the packet content.

Also note that it's not possible to check the response code of the hidden iframe, so the success handler will ALWAYS fire.

 

解决方法:

将服务器的返回类型改为text/html即可

0
2
分享到:
评论

相关推荐

    extjs3.x 官方示例以及chm版api

    接下来,`Ext_3.X.CHM`文件是ExtJS 3.x 的离线帮助文档,通常包含以下内容: 1. **类库参考**:详细介绍了每一个类,包括类的属性、方法、事件以及配置项,是开发过程中不可或缺的参考资料。 2. **API索引**:按照...

    ExtJS 多文件上传 UploadDialog For ExtJS3.x

    ### ExtJS 多文件上传 UploadDialog For ExtJS3.x #### 概述 在Web开发领域,特别是使用ExtJS框架进行界面设计时,文件上传功能是必不可少的一部分。然而,随着ExtJS版本的更新,原有的多文件上传组件可能不再兼容...

    extjs 3.x upload上传组件

    ExtJS 3.x Upload上传组件是基于ExtJS 3.x版本的一个功能强大的文件上传工具,它为Web应用程序提供了用户友好的界面和灵活的文件管理功能。这个组件在Web开发中非常实用,尤其对于需要处理大量文件上传的项目,如...

    Extjs3.x入门学习

    ExtJS 是一个强大的JavaScript库,主要用于构建富客户端的Web应用程序。在3.x版本中,它提供了丰富的用户界面组件和强大的数据绑定机制。本篇将基于"Extjs3.x入门学习"这一主题,深入探讨相关知识点。 1. **EXT_JS...

    Extjs2.x 实现文件上传组件

    在ExtJS 2.x版本中,实现文件上传组件是一项常见的需求,它允许用户在Web应用中选择并上传本地文件到服务器。在本文中,我们将深入探讨如何在ExtJS 2.x中实现这一功能。 首先,我们需要理解ExtJS中的FormPanel组件...

    extjs3.x+swfupload.swf多文件上传终结版

    总的来说,这个"extjs3.x+swfupload.swf多文件上传终结版"是一个整合了ExtJS 3.x UI框架和SWFUpload技术的解决方案,旨在提供一个稳定、高效的多文件上传体验,且已经在VS2008环境中得到了验证。使用这样的组件,...

    extjs4.x tabpanel 动态加载panel和html例子

    在EXTJS 4.x框架中,`tabpanel`是用于创建多标签界面的组件,它可以方便地组织和切换多个视图。动态加载panel和HTML到tabpanel是提高应用性能和用户体验的有效方式,因为它允许按需加载内容,减少初始页面加载时间。...

    Extjs4.X下comboboxTree下拉树型菜单,完美支持多选、单选,绝对好用

    在ExtJS 4.x框架中,ComboboxTree是一种特殊的组件,它将传统的下拉框与树形结构结合在一起,提供了一种更为灵活的用户输入方式。这种组件在数据选择上非常实用,尤其当数据层级关系复杂时,可以方便地进行多选或...

    extjs4.x 配置所需jsb和js文件

    ExtJS 4.x 是一个流行的JavaScript框架,用于构建富客户端应用程序。它提供了丰富的组件库、数据绑定机制和可扩展的架构。在开发过程中,正确配置所需的jsb(JSBuilder)和js文件至关重要,以确保应用的高效运行和...

    Extjs2.x主题

    ExtJS是一个广泛使用的JavaScript库,专门用于构建富客户端应用程序。在2.x版本中,它提供了丰富的用户界面组件和强大的数据管理功能。主题是ExtJS应用的外观和感觉,定义了控件的颜色、字体、布局样式等。下面我们...

    ExtJS 3.x中文API

    ExtJS 是一个流行的JavaScript库,专门用于构建富客户端应用程序。3.x 版本是其早期的一个稳定版本,广泛应用于各种企业级应用开发。这个“ExtJS 3.x 中文API”压缩包提供了一个中文版的文档,对于那些不熟悉英文...

    Extjs6.x插件,双击关闭选项卡(js源码)

    描述中提到的问题正是这种情况:开发者发现EXTJS 4的双击关闭选项卡的方法在EXTJS 6.x 上已不再适用。 为了在EXTJS 6.x 中实现双击关闭选项卡的功能,我们可以编写一个自定义插件。`ext-tab-close-plugin.js` 文件...

    ExtJS实现多文件上传UploadDialog For ExtJS3.x

    在本文中,我们将深入探讨如何使用ExtJS 3.x实现多文件上传功能,结合Struts2框架进行数据处理。首先,我们需要确保环境配置正确。在描述中提到,我们需要将一系列Struts2相关的库文件复制到项目的`WebContent\lib`...

    EXTJS_.7z文件上传

    6. **EXTJS4文件上传**:EXTJS4版本的文件上传功能与EXTJS3相比有改进,可能涉及到使用`Ext.form.field.File`组件和`Ext.form.action.Upload`动作,以及调整上传参数和配置。 7. **Struts2获取request三种方法**:...

    ExtJS2.X 版本app

    ExtJS2.X 版本app 这个版本目前找不到了噢

    ExtJS3.x 中文API CHM 格式

    ExtJS3.x 中文帮助文档,是 CHM 格式的,方便阅读和查询。本人正在使用,效果不错,共享出来,方便大家。

    EXTJS2.x_pagingstore.zip

    "EXTJS2.x_pagingstore.zip" 文件是一个压缩包,包含与ExtJS 2.x中的分页存储(Paging Store)相关的资源,这是一个非常关键的功能,尤其在处理大量数据时。 分页存储是ExtJS中用于管理大数据集的一种机制,它允许...

    ExtJS 4.X 中文Api CHM

    Ext JS 4.X 中文API,不过有些地方不是很好,显示的有点慢!

    ExtJS4.x中文API

    extjs4.x中文api 实用比较方便 。

Global site tag (gtag.js) - Google Analytics