javascript - 程序化 Dojox uploader - ajax 上传不工作

标签 javascript ajax upload dojo

我找不到任何关于以编程方式创建 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 插件中)覆盖。

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

感谢您的帮助!

最佳答案

简而言之;使用新的 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

关于javascript - 程序化 Dojox uploader - ajax 上传不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343652/

相关文章:

javascript - 使用 PHP 和 jQuery 显示目录中的文件

javascript - Ajax - GET 方法不发送参数

浏览器的 AJAX (XmlHttpRequest) 超时长度

php - Nginx、PHP 和 centos7 连接到不同网络时报错 413-request-entity-too-large

api - Jim Saunders使用CI Youtube Data Api上传表单

javascript - 在 rails .rb 文件中取消转义 javascript/在 ruby​​ 方法中返回 js

javascript - 是否可以获取一个巨大的字符串并将其作为 JavaScript 通过 URL 路径加载?

javascript - React 将 prop 作为函数传递,然后调用它 error

javascript - f :ajax doesn't fire for onevent begin event

sql - 如何将 SQL Server 数据库上传到共享主机环境?