2

私は jquery プラグインで素晴らしいアップローダーを使用しています。ファイルをアップロードする前にパラメーターを動的に渡す必要があるため、 setParams() メソッドがその仕事を行う必要があります。onSubmit コールバックで例外を発生させることはできません:

1) アップローダー宣言

 function initUploader() {
         var up = $('#BSUploader').fineUploader({
                      multiple: true,
                      debug: true,
                      request: {
                          endpoint: '${request.contextPath}/quantum/uploadToS3',
                          //params: {'folderId':r }
                      },
                      dragAndDrop: {
                          extraDropzones:[$('#filesContainer')],

...

2) onSubmit コールバック

...
}).on('submit', function(event, id, name) {
          var r = $("#curfolderid").val();
          alert(r);
          up.setParams({'folderId':r});

3) エラーログ

[FineUploader] Caught exception in 'onSubmit' callback - Object [object Object] has no method 'setParams' bundle-bundle_uploader_defer.js:4
qq.log bundle-bundle_uploader_defer.js:4
qq.FineUploaderBasic.log bundle-bundle_uploader_defer.js:26
b bundle-bundle_uploader_defer.js:47
a._options.callbacks.(anonymous function) bundle-bundle_uploader_defer.js:47
qq.FineUploaderBasic._upload bundle-bundle_uploader_defer.js:43
qq.FineUploaderBasic._uploadFileOrBlobDataList bundle-bundle_uploader_defer.js:43
qq.FineUploaderBasic.addFiles bundle-bundle_uploader_defer.js:29
qq.DragAndDrop.callbacks.dropProcessing bundle-bundle_uploader_defer.js:69
b bundle-bundle_uploader_defer.js:51
qq.UploadDropZone.onDrop bundle-bundle_uploader_defer.js:52
(anonymous function)

何か案が ?

4

1 に答える 1

7

jQuery プラグイン ラッパーを正しく使用していません。このプラグインのドキュメントでは、プラグインの使用時に API メソッドを呼び出す方法が明確に説明されています。最初のページから始めて readme に実際に従い、次に、使用目的に基づいて概説されたパスに従う必要があります。そうすることで、ライブラリに慣れていれば解決できたはずの問題に遭遇するのを防ぐことができます。

さて、あなたの問題を解決するために...

作成した変数には、「BSUploader」という ID を持つ要素を表すオブジェクトupが割り当てられます。jQueryこの jQuery オブジェクトに存在しない関数を呼び出そうとしています。Fine Uploader は、追加のメソッドで jQuery オブジェクトを汚染しません。プラグイン ラッパーの開発時には、jQuery Web サイトで概説されているすべての承認済み/推奨標準に従っています。つまり、プラグイン インスタンスのコンテキスト内で API メソッドを呼び出す必要があります。

したがって、次の行を変更する必要があります。
up.setParams({'folderId':r});

これに:
up.fineUploader('setParams', {'folderId':r});

別のオプションは、up変数を完全に削除することです。setParams次のようにコールバック ハンドラを呼び出すことができるため、実際には必要ありません。
$(this).fineUploader('setParams', {'folderId':r});

于 2013-04-06T13:41:47.203 に答える