6

我的 extjs 代码如http://www.objis.com/formationextjs/lib/extjs-4.0.0/docs/api/Ext.form.field.File.html

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.');
                    }
                });
            }
        }
    }]
});

我的 photo-upload.php 文件

echo "{success:true}";

但是当成功时o.result.file显示undefined。我认为它会在成功后显示文件名。
成功后如何让它显示文件名谢谢

4

3 回答 3

1

您只是返回"{success:true}"甚至不是有效的 JSON,但期望 ExtJS 为您提供更多数据?

尝试像返回 JSON

{ "success": true, "file": "filename" }

以便客户端可以读取结果中的文件属性。

于 2013-06-20T08:40:01.967 回答
0

只需在前端将正确的 json 构造返回给 eval 即可。

要将文件名显示为消息,您不需要从后端返回值,您已经可以使用它。参考下面的代码

var fileUploadComp = // 例如:Ext.getCmp('DictUploadField'); var fileName = fileUploadComp.getValue();

把它fileName 放在你的消息中。

谢谢。

于 2013-06-20T09:02:50.690 回答
0

​注:服务器响应类型应为“text/html”。

return Json(new {
    success = true,
    msg = "Your file has been uploaded"
}, "text/html");

现场演示在这里

于 2014-02-20T12:19:22.847 回答