Extjs4.2 表单上传success : function没执行

huangzebiao007 2014-08-11 03:21:44
我表单只有一个文件控件,做了文件上传,服务端返回的字符串是:
{success: true,msg:'操作成功!'}

前端是:

form.submit( {
url: 'go?handler=uploadFile',
waitMsg : 'waiting.....',
success : function(form, action) {
alert("hzb");
Ext.Msg.alert('Tips', "<font color='green'>"
+ action.result.msg + "</font>");

},
failure : function(form, action) {
Ext.Msg.alert('Tips', "<font color='red'>"
+ action.result.msg + "</font>");
}
});


但success : function就是没执行到,我把文件控件去掉,换成一个文本框,提交后,服务端再返回{success: true,msg:'操作成功!'} success : function 就能执行到了,这是啥情况
...全文
1349 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijun9250 2017-02-12
  • 打赏
  • 举报
回复
我也遇到这问题,用ext来上传文件,总是停留在“正在保存。。。”页面,不执行success或者failure函数,后台确定已经返回了正确的success:true, 现在解决了,13楼正解,把后台向前台传送字符串的格式,我的java中原来是ext/json,现在改为text/html就好了, 很奇怪的问题,其他的都能正常使用,
lijun9250 2017-02-12
  • 打赏
  • 举报
回复
我也碰到,还没有解决
qq_28227277 2016-11-30
  • 打赏
  • 举报
回复
我也遇到这个问题了,大家解决了吗
于大博 2015-12-30
  • 打赏
  • 举报
回复
failure 打印action的内容是 {form: A, url: "http://192.168.10.53:9090/FWUpgrader/FW/upload/1", waitMsg: "文件上传中...", dataType: "json", contentType: "text/html"…} contentType: "text/html" dataType: "json" failure: (formpanel , action) failureType: "connect" form: A response: Object responseText: "{success:false,message:"Blocked a frame with origin "null" from accessing a cross-origin frame."}" responseXML: null __proto__: Object success: (formpanel , action) arguments: null caller: null length: 2 name: "" prototype: formpanel.submit.success __proto__: () <function scope> url: "http://192.168.10.53:9090/FWUpgrader/FW/upload/1" waitMsg: "文件上传中..." __proto__: Object
于大博 2015-12-30
  • 打赏
  • 举报
回复
我也遇到了同样的问题,求解! 返回的数据类型也是json 但是不执行success函数
dieslrae 2014-11-04
  • 打赏
  • 举报
回复
引用 12 楼 u011490320 的回复:
哥们,把解决方法贴出来呀,我也碰到了
只要返回的数据的contentType改成text/html就行,text/xml不行
u011490320 2014-10-15
  • 打赏
  • 举报
回复
哥们,把解决方法贴出来呀,我也碰到了
绿苹果果 2014-08-23
  • 打赏
  • 举报
回复

{
                    xtype: 'form',
                    id: 'book_add_formpan',
                    url: '../AddBook',
....
}

Ext.getCmp('book_add_formpan').submit({success:function(){
Ext.Msg.alert("success");
Ext.getCmp("book_add_win").close();}});
这样是可以的 4.2.1版本
Go 旅城通票 2014-08-19
  • 打赏
  • 举报
回复
包含文件用的iframe来模拟上传,不是ajax了,肯定是你文件处理出问题了,用开发工具看具体返回什么,如chrome的开发工具或者firefox的firebug看 , failure : function(form, action) { console.log(action) Ext.Msg.alert('Tips', "<font color='red'>" + action.result.msg + "</font>"); } 打印action看有什么内容
huangzebiao007 2014-08-18
  • 打赏
  • 举报
回复
引用 7 楼 showbo 的回复:
包含文件不执行success,不包含执行,说明你包含文件的时候应该是代码有问题了,导致返回的不是你说的那个{success: true,msg:'操作成功!'}字符串 自己用开发工具件监视下发送请求到底返回了什么内容,或者出错了
我再试验了下,发现有一个Uncaught TypeError: Object #<Object> has no method 'getResponseHeader' 这样的错误,请问是什么原因呢
huangzebiao007 2014-08-18
  • 打赏
  • 举报
回复
引用 7 楼 showbo 的回复:
包含文件不执行success,不包含执行,说明你包含文件的时候应该是代码有问题了,导致返回的不是你说的那个{success: true,msg:'操作成功!'}字符串 自己用开发工具件监视下发送请求到底返回了什么内容,或者出错了
返回的的确是{success: true,msg:'操作成功!'}这串字符串,已经测试过了,但就是不执行success : function(form, action)函数
Go 旅城通票 2014-08-15
  • 打赏
  • 举报
回复
包含文件不执行success,不包含执行,说明你包含文件的时候应该是代码有问题了,导致返回的不是你说的那个{success: true,msg:'操作成功!'}字符串 自己用开发工具件监视下发送请求到底返回了什么内容,或者出错了
lzpggg 2014-08-13
  • 打赏
  • 举报
回复
如果还不行,后台返回时更改response的ContentType试一下,我的是html类型 response.setContentType("text/html;charset=utf-8")或者response.setContentType("text/plain;charset=utf-8")
lzpggg 2014-08-13
  • 打赏
  • 举报
回复
Javascript 代码:
Ext.onReady(function () {

    Ext.define('ImagePanel', {
        extend: 'Ext.form.Panel',
        fileUpload: true,
        title: 'Upload Panel',
        width: 300,
        height: 100,

        onUpload: function () {
            this.getForm().submit({
                url: 'upload.php',
                scope: this,
                success: function (formPanel, action) {
                    var data = Ext.decode(action.response.responseText);
                    alert("Success: " + data.msg);
                },
                failure: function (formPanel, action) {
                    var data = Ext.decode(action.response.responseText);
                    alert("Failure: " + data.msg);
                }
            });
        },

        initComponent: function () {
            var config = {
                items: [
                    {
                        xtype: 'fileuploadfield',
                        buttonText: 'Upload',
                        name: 'uploadedFile',
                        listeners: {
                            'change': {
                                scope: this,
                                fn: function (field, e) {
                                    this.onUpload();
                                }
                            }
                        }
                    }
                ]
            };

            Ext.apply(this, Ext.apply(this.initialConfig, config));
            this.callParent(arguments);
        }
    });


    var panel = Ext.create('ImagePanel', {
        renderTo: Ext.getBody()
    });
});
记住返回时加双引号的
{"success": false, "msg": "No Files"}
huangzebiao007 2014-08-13
  • 打赏
  • 举报
回复
自己顶一下!!
huangzebiao007 2014-08-12
  • 打赏
  • 举报
回复
没人遇到过这问题吗,版主进来帮忙看看
huangzebiao007 2014-08-11
  • 打赏
  • 举报
回复
引用 1 楼 ly12530 的回复:

<form enctype="multipart/form-data">
</from>
设置了么?
谢谢你的回复,我用的是extjs,后台也已经将图片成功接收存储下来了,只是返回值后success回调函数没执行而已
Null_Reference 2014-08-11
  • 打赏
  • 举报
回复

<form enctype="multipart/form-data">
</from>
设置了么?

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧