2015-10-09 3 views
1

Я использую плагин blueimp для загрузки файлов, и все работает нормально.Не могу прочитать свойство 'length' undefined n.extend.each

Однако Атера загрузка завершена, я получаю это в консоли навигатора:

Uncaught TypeError: Cannot read property 'length' of undefined
n.extend.each @ jquery-2.1.4.min.js:2
up.find.fileupload.done @ imgdown.js:45
$.Widget._trigger @ jquery.ui.widget.js:527
$.widget._onDone @ jquery.fileupload.js:862
(anonymous function) @ jquery.ui.widget.js:127
(anonymous function) @ jquery.fileupload.js:908
j @ jquery-2.1.4.min.js:2k.fireWith @ jquery-2.1.4.min.js:2
x @ jquery-2.1.4.min.js:4k.cors.a.crossDomain.send.b @ jquery-2.1.4.min.js:4"

Я хочу знать, если есть способ, чтобы исправить это.

вот код:

imgdown.js

form.fileupload({ 
    url: form.attr('action'), 
    dataType: 'html', 
    done: function (e, data) { 
     $.each(data.result.files, function (index, file) { 
      $('<p/>').text(file.name).appendTo('#icon'); 
     }); 
    }, 
    progressall: function (e, data) { 
     showprog(form.find('div#progress')); 
     var progress = parseInt(data.loaded/data.total * 100, 10); 
     up.find('#progress .progress-bar').css('width', progress + '%') 
      .text(progress + '%'); 
    } 
}).prop('disabled', !$.support.fileInput) 
    .parent().addClass($.support.fileInput ? undefined : 'disabled'); 
+0

Моя догадка 'data.result.files' является' undefined'. Простой 'console.log' покажет, верно ли это. Проверьте, что находится в 'data'. – epascarello

ответ

1

data.result.files не является массивом или массив как объект. Она не имеет length собственности. Вам нужно выяснить, что он на самом деле содержит, и почему он не содержит того, что вы думаете. Начните с просмотра инструментов разработчика вашего браузера и узнайте, какое значение отправлено вам в ответ на запрос AJAX.

Смежные вопросы