Ошибка синтаксиса jquery fileupload Ошибка типа

С этим скриптом (jquery для загрузки файлов) я получаю некоторую ошибку, но он работает в wamp на локальном компьютере. Для производства мне нужно остановить эту ошибку предупреждения"

"SyntaxError: отсутствует } после списка свойств
progressall: функция (e, данные) {"

или в Хроме:

«Неожиданный идентификатор синтаксической ошибки в строке 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 нет ошибок, но не работает

В хромовой ошибке (Uncaught TypeError: невозможно вызвать метод «push» из 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, потому что я получаю вторую вкладку 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') 

});
});

person user1997147    schedule 21.01.2013    source источник


Ответы (1)


В вашем сценарии есть фундаментальные ошибки, которые приведут к многочисленным ошибкам.

  • У вас должны быть запятые в конце каждого члена объекта параметров, который вы передаете плагину .fileupload().
  • Вы объявили повторяющиеся методы обратного вызова. Обратный вызов done объявлен 3 раза, обратный вызов add объявлен дважды.

Таким образом, вы должны либо использовать только одно из каждого повторяющегося замедления, либо объединить код в этих дубликатах в один. Но я вижу, что код внутри этих обратных вызовов также дублируется.

Вот очищенная версия вашего кода:

<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>
person Onur Yıldırım    schedule 21.01.2013
comment
Спасибо, ваше объяснение в порядке, но на самом деле: в firefox кажется лучше: нет ошибок или предупреждений, но плагин больше не работает. В Chrome: Uncaught TypeError: невозможно вызвать метод «push» для undefined firebug-lite.js: 30905 logRow firebug-lite.js:30905 logFormatted firebug-lite.js:30894 sysout firebug-lite.js:30842 CssAnalyzer.processAllStyleSheets firebug-lite.js:25751 FBL.Firebug.initialize firebug-lite.js:6289 (анонимная функция ) и не работают, так что буду тестировать... :-) - person user1997147; 21.01.2013
comment
Я предлагаю вам использовать Firefox с расширением Firebug, пока вы не решите эту проблему. И опубликуйте полный код здесь, чтобы мы могли помочь вам больше. В опубликованном вами коде не определен метод push. Но, тем не менее, то, о чем я упоминаю в своем ответе, — это то, с чего вам следует начать, потому что этот журнал firebug-lite — не единственная проблема с вашим кодом. - person Onur Yıldırım; 21.01.2013
comment
нормально с файрфоксом нет ошибок при загрузке страницы. фотографии не отображаются, и их имена перечислены дальше. - person user1997147; 21.01.2013
comment
Можете ли вы вставить полный код, который делает запрос (и журнал ответа Firebug)? Я думаю, у вас есть некоторые проблемы с параметрами загрузки. - person Onur Yıldırım; 21.01.2013
comment
Я не могу опубликовать там весь код: слишком долго, возможно, вы можете дать мне свой адрес электронной почты? мой [email protected] - person user1997147; 21.01.2013
comment
Хорошо, наконец, ваш скрипт не работает на локальном wamp, а на сервере мой первый скрипт работает на локальном wamp и на сервере !! но у меня ошибка... синтаксическая ошибка... - person user1997147; 22.01.2013