21

jQuery-File-Uploadプラグインを使用しています。私はそれをテストするための簡単なコードを書きました - そしてそれは動作しますが、問題がないわけではありません. doneファイルがアップロードされ、進行状況バーが最後に達しても、トリガーされません。

コードは次のとおりです。

$('#file_file').fileupload({
    dataType: 'json',
    autoUpload: true,
    add: function (e, data) {
        data.context = $('<p/>').text('Uploading...').appendTo(document.body);
        data.submit();
    },
    progressall: function (e, data) {
        var progress = parseInt(data.loaded / data.total * 100, 10);
        $('#progress .bar').css(
            'width',
            progress + '%'
        );
    },
    done: function (e, data) {
        alert('Done');
    }
});

私の入力はそれと同じくらい簡単です:

<input type="file" id="file_file" name="file[file]" />
4

8 に答える 8

10

私はいくつかのことを変更しました、そしてそれはうまくいきます。ここ:

$('#file_file').fileupload({
    autoUpload: true,
    add: function (e, data) {
        $('body').append('<p class="upl">Uploading...</p>')
        data.submit();
    },
    progressall: function (e, data) {
        var progress = parseInt(data.loaded / data.total * 100, 10);
        $('#progress .bar').css(
            'width',
            progress + '%'
        );
    },
    done: function (e, data) {
        $('.upl').remove();
        $.each(data.files, function (index, file) {
            /**/
        });
    }
});
于 2013-02-03T18:06:40.080 に答える
6

autoUpload: trueで修復しました。autoUpload プロパティが設定されていない場合 (アップロードが期待どおりに機能している場合でも)、done イベントがトリガーされないように見えます。

于 2013-05-29T09:47:15.953 に答える
2

今日実験しました!uploadhanlerPHP を使用している場合は、 PHP ファイルにエラーや警告が表示されていないことを確認してください。不適切な JSON 出力が作成され、ファイルがアップロードされると、プラグインは完了イベントで正しい JSON バッファーを送信できません。

PHP ファイルのエラーを追跡するには、そのようなスクリプトでエラーを表示するのではなく、ログ ファイルを作成することをお勧めします。以下を使用できます。

error_reporting(0)

ただし、ログ ファイルにエラー追跡を追加することを忘れないでください。もちろん !

于 2016-06-08T12:35:34.570 に答える
-1
 $(input).fileupload(

       url      : '...'

      ,dataType : 'json'
      ,sequentialUploads : true

       ,add      : function (e,data) {


           $.each(data.files,function(i,file){

                file.jqXHR = data.submit()
                           .success(function (result, textStatus, jqXHR) {/* ... */})
                           .error(function (jqXHR, textStatus, errorThrown) {
                             })
                           .complete(function (result, textStatus, jqXHR) { 
                               //...                   
                                     });

                 });
       }


       ,done: function (e, data) {
         console.log(data);

       }


   });

私にとっては完璧に機能します。

違いは

  • URL が設定されました (ここのスニペットに入れるのを忘れていただければ幸いです)。

  • ダウンロードキューにファイルを追加する方法

  • 順次アップロード(?)

編集 :

jQuery File Upload プラグインは、ファイル アップロード リクエストに jQuery.ajax() を使用します。これは、Iframe Transport プラグインのおかげで、XHR をサポートしていないブラウザーにも当てはまります。

ファイル アップロード プラグインに設定されたオプションは jQuery.ajax() に渡され、任意の ajax 設定またはコールバックを定義できます。ajax オプションの processData、contentType、および cache は、ファイルのアップロードが機能するように false に設定されており、変更しないでください。

https://github.com/blueimp/jQuery-File-Upload/wiki/Options

コードのどこかで、これらの ajax 設定を変更することもできます。とにかく、 $.ajax を使用しているため設定が正しい場合、完了はトリガーされません。

于 2013-02-03T17:53:36.133 に答える