1

この(ファイルアップロード用のjquery)スクリプトを使用すると、エラーが発生しますが、ローカルのwampで機能しています。本番環境では、このアラート エラーを停止する必要があります」

"SyntaxError: missing } プロパティ リストの後に
progressall: function (e, data) {"

またはChromeで:

「行 211 の不明な構文エラーの予期しない識別子」

firefox と同じ行です。

誰かアイデアがありますか?

 $(function () {
     $('#fileupload').fileupload({
        dataType: 'json',       
        done: function (e, data) {
        $.each(data.result.files, function (index, file) {
            $('<p/>').text(file.name).appendTo(document.body);
        });
    }
    progressall: function (e, data) {
    var progress = parseInt(data.loaded / data.total * 100, 10);
    $('#progress .bar').css(
        'width',
        progress + '%'
     );
    }
    add: function (e, data) {
        data.context = $('<p/>').text('Uploading...').appendTo(document.body);
        data.submit();
    }
    done: function (e, data) {
        data.context.text('Upload finished.');
    }
    add: function (e, data) {
        data.context = $('<button/>').text('Upload')
            .appendTo(document.body)
            .click(function () {
                $(this).replaceWith($('<p/>').text('Uploading...'));
                data.submit();
            });
    }
    done: function (e, data) {
        data.context.text('Upload finished.');
    }

     });
});

私はいくつかの変更を加えました: mozilla でエラーはありませんが、動作しません

Chrome エラー (Uncaught TypeError: Cannot call method 'push' of undefined ) で動作しない

$(function () {
    //declare a "updloadOptions" variable object that will be passed to the plugin constructor method as a parameter. (You can give any name to this object.)
    var updloadOptions = {};

    //set the datatype property to 'json'.
    updloadOptions.dataType = 'json';
    //declare the "done" callback method on "updloadOptions" object.
    updloadOptions.done = function (e, data) {
        $.each(data.result.files, function (index, file) {
            $('<p/>').text(file.name).appendTo(document.body);
        });
    };
    //declare the "progressall" callback method on "updloadOptions" object.
    updloadOptions.progressall = function (e, data) {
        var progress = parseInt(data.loaded / data.total * 100, 10);
        $('#progress .bar').css(
            'width',
        progress + '%');
    };
    //declare the "add" callback method on "updloadOptions" object.
    updloadOptions.add = function (e, data) {
         data.context = $('<button/>').text('Upload')
         .appendTo(document.body)
         .click(function () {             $(this).replaceWith($('<p/>').text('Uploading...'));                
        data.context = $('<p/>').text('Uploading...').appendTo(document.body);
        data.submit();
        });
    };
    //initialize the component
    $('#fileupload').fileupload(updloadOptions);
});

構文エラーのある正しいスクリプト

SyntaxError:プロパティ リストの後に } がありませ
ん filesContainer: $('.filescontainer')

filesContainerそして、uploadsystem で 2 番目の jquery タブを取得するので、必要ありません。

$(function () {
$('#fileupload').fileupload({
   dataType: 'json',       
   done: function (e, data) {
       $.each(data.result.files, function (index, file) {
           $('<p/>').text(file.name).appendTo(document.body);
       });
   },
   progressall: function (e, data) {
   var progress = parseInt(data.loaded / data.total * 100, 10);
   $('#progress .bar').css(
       'width',
       progress + '%'
    );
   },
   add: function (e, data) {
       data.context = $('<p/>').text('Uploading...').appendTo(document.body);
       data.submit();
   },
   done: function (e, data) {
       data.context.text('Upload finished.')
   },
   add: function (e, data) {
       data.context = $('<button/>').text('Upload')
           .appendTo(document.body)
           .click(function () {
               $(this).replaceWith($('<p/>').text('Uploading...'));
               data.submit();
           });
   },  done: function (e, data) {
       data.context.text('Upload finished.')
   }
   filesContainer: $('.filescontainer') 

});
});
4

1 に答える 1

2

スクリプトに根本的な誤りがあり、複数のエラーが発生します。

  • .fileupload()プラグインに渡すオプションオブジェクトの各メンバーの最後にコンマを付ける必要があります。
  • 重複するコールバックメソッドを宣言しました。doneコールバックは3回宣言され、addコールバックは2回宣言されます。

したがって、重複する減速をそれぞれ1つだけ使用するか、それらの重複のコードを1つにマージする必要があります。しかし、これらのコールバック内のコードも重複していることがわかります。

コードのクリーンアップされたバージョンは次のとおりです。

<script type="text/javascript">
    $(function () {
        $('#fileupload').fileupload({
            dataType: 'json',
            done: function (e, data) {
                $.each(data.result.files, function (index, file) {
                    $('<p/>').text(file.name).appendTo(document.body);
                });
            },
            progressall: function (e, data) {
                var progress = parseInt(data.loaded / data.total * 100, 10);
                $('#progress .bar').css('width', progress + '%');
            },
            add: function (e, data) {
                data.context = $('<p/>').text('Uploading...').appendTo(document.body);
                data.submit();
            }
        });
    });
</script>

そして、ここにもっと読みやすいバージョンがあります:

<script type="text/javascript">

    $(function () {

        //declare a "updloadOptions" variable object that will be passed to the plugin constructor method as a parameter. (You can give any name to this object.)
        var updloadOptions = {};

        //set the datatype property to 'json'.
        updloadOptions.dataType = 'json';

        //declare the "done" callback method on "updloadOptions" object.
        updloadOptions.done = function (e, data) {
            $.each(data.result.files, function (index, file) {
                $('<p/>').text(file.name).appendTo(document.body);
            });
        };

        //declare the "progressall" callback method on "updloadOptions" object.
        updloadOptions.progressall = function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $('#progress .bar').css('width', progress + '%');
        };

        //declare the "add" callback method on "updloadOptions" object.
        updloadOptions.add = function (e, data) {
            data.context = $('<p/>').text('Uploading...').appendTo(document.body);
            data.submit();
        };

        //initialize the component
        $('#fileupload').fileupload(updloadOptions);

    });

</script>
于 2013-01-21T13:42:10.023 に答える