【问题标题】:Programmatic Dojox Uploader - ajax upload not working程序化 Dojox 上传器 - ajax 上传不起作用
【发布时间】:2012-05-07 18:57:13
【问题描述】:

我找不到任何有关以编程方式创建 dojox/form/Uploader 的文档。我自己尝试过,但看起来插件注册机制不知何故被破坏了。

require([
    "dojo/dom-construct",
    "dijit/form/Button",
    "dojox/form/Uploader",
    "dojox/form/uploader/FileList",
    "dojox/form/uploader/plugins/IFrame",
    "dojo/domReady!"
    ], function(domConstruct, Button, Uploader, UploaderFileList) {

   var form = domConstruct.create('form', {
        method: 'post',
        enctype: 'multipart/form-data',
        class: 'Uploader'
    }, document.body);     

    var up = new Uploader({
        label: 'Pick files',
        multiple: true,
        url: '/echo/json/'
    }).placeAt(form);

    var list = new UploaderFileList({
        uploader: up
    }).placeAt(form);

    var btn = new Button({
        type: 'submit',
        label: 'upload',
        onClick: function() {
            up.upload();
        }
    }).placeAt(form);


    btn.startup();
    up.startup();
    list.startup();

});​

关于 jsfiddle here 的示例。

据我了解,dojox/form/Uploader和dojox/form/uploader/plugins/IFrame的源码,插件是通过dojox.form.addUploaderPlugin函数注册的,它使用self和plugged重新声明了Uploader小部件类插件作为它的前辈。 但是 Uploader 小部件的关键方法“上传”永远不会被 HTML5 插件(它自动包含在 iframe 插件中)覆盖。

这是错误吗?还是我做错了什么?

感谢您的帮助!

【问题讨论】:

    标签: javascript ajax upload dojo


    【解决方案1】:

    简而言之;使用新的 dojox.form.Uploader 代替拉入的变量,否则插件扩展不适用。

    原因是,您会看到程序员在 addUploaderPlugin 中执行以下操作:

    dojox.form.UploaderOrg = dojox.form.Uploader;
    var extensions = [dojox.form.UploaderOrg];
    dojox.form.addUploaderPlugin = function(plug){
    
                extensions.push(plug);
                declare("dojox.form.Uploader", extensions, {});
        }
    

    AMD 加载器返回的类是 dojox.form.UploaderOrg 并且永远不会知道扩展插件。

    更改如下:

    var up = new dojox.form.Uploader({
        label: 'Pick files',
        multiple: true,
        url: '/echo/json/'
    }).placeAt(form);
    

    并确保您设置djConfig.publishRequireResult = false

    【讨论】:

    • 我今天醒来时的想法完全一样 :-) 非常感谢您的回答!
    猜你喜欢
    • 2017-03-07
    • 2015-02-21
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2017-12-17
    • 1970-01-01
    相关资源
    最近更新 更多