簡體   English   中英

程序化Dojox上傳器 - ajax上傳無法正常工作

[英]Programmatic Dojox Uploader - ajax upload not working

我找不到任何關於以編程方式創建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例子在這里

據我所知,dojox / form / Uploader和dojox / form / uploader / plugins / IFrame的源代碼,插件是通過dojox.form.addUploaderPlugin函數注冊的,該函數使用self和plugged插件重新聲明Uploader widget類。前輩。 但是上傳器小部件的關鍵方法“上傳”永遠不會被HTML5插件覆蓋(隨iframe插件自動包含)。

這個錯誤嗎? 或者我做錯了什么?

謝謝你的幫助!

簡而言之; 使用新的dojox.form.Uploader而不是pull in變量,否則插件擴展不適用。

原因是,您會看到程序員在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM