Как получать ответ сервера после загрузки файла плагином jQuery File Upload?

Насколько я понял, загрузка считается успешной, если после загрузки сервер ответит json-ом
{
"status":"succsess"
}


Или нет? Но мне нужно получить другое содержимое, находящееся после status. Как это сделать?
P.S. Под ответом сервера я подразумеваю содержимое страницы.

код скрипта загрузки:
$(function(){

    $('.link').hide();
 
    $('#uploadButton').click(function(){
        // имитация нажатия на поле выбора файла
        $(this).parent().find('input').click();
    });

 // инициализация плагина jQuery File Upload
    $('#upload').fileupload({
 
        // этот элемент будет принимать перетаскиваемые на него файлы
        dropZone: $('body'),
 
        // Функция будет вызвана при помещении файла в очередь
        add: function (e, data) {
 
            var tpl = $('<li><input type="text" value="0" data-width="48" data-height="48"'+
                ' data-fgColor="#0788a5" data-readOnly="1" data-bgColor="#3e4043" /><p></p><span></span></li>');
 
            // вывод имени и размера файла
            tpl.find('p').text(data.files[0].name)
                         .append('<i>' + formatFileSize(data.files[0].size) + '</i>');
 
 
            // инициализация плагина jQuery Knob
            tpl.find('input').knob();
 
            // отслеживание нажатия на иконку отмены
            tpl.find('span').click(function(){
 
                if(tpl.hasClass('working')){
                    jqXHR.abort();
                }
 
                tpl.fadeOut(function(){
                    tpl.remove();
                });
 
            });
 
            // Автоматически загружаем файл при добавлении в очередь
            var jqXHR = data.submit();
        },
 
        progress: function(e, data){
 
            // Вычисление процента загрузки
            var progress = parseInt(data.loaded / data.total * 100, 10);
 
 
            if(progress == 100){
                $('#uploadButton').text('Complete!');
                $('#zen').fadeOut(200);
            } else {
                $('#uploadButton').text(progress);
            }
        },
 
        fail:function(e, data){
            // что-то пошло не так
            $('#uploadButton').text('Error!');
            $('#zen').fadeOut(200);
        }
 
    });
 
    $(document).on('drop dragover', function (e) {
        e.preventDefault();
    });
 
    // вспомогательная функция, которая форматирует размер файла
    function formatFileSize(bytes) {
        if (typeof bytes !== 'number') {
            return '';
        }
 
        if (bytes >= 1000000000) {
            return (bytes / 1000000000).toFixed(2) + ' GB';
        }
 
        if (bytes >= 1000000) {
            return (bytes / 1000000).toFixed(2) + ' MB';
        }
 
        return (bytes / 1000).toFixed(2) + ' KB';
    }

    /*$('form input[type=file]').on('change', function() {
		
	});*/
 
});

Да, это есть в интернетах.
  • Вопрос задан
  • 3681 просмотр
Решения вопроса 1
miraage
@miraage
Старый прогер
Вероятно, Вам нужны коллбеки.

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

// upd

$('#uploader').bind('fileuploaddone', function(event, data) {
    console.log(data);
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Плагин не реагирует на json
{
"status":"succsess"
}

У меня сервак, например, захлебывается от неверного файла (шлю txt переименованный в jpeg), а в браузере все нормально, файл отослан. Как заставить реагировать на ответы сервера? и выводить в браузер ошибки, которые генерит мой серверный скрипт обработки приема файлов?
Вот как:
браузер:
done:  function(e, data){
			data.context.removeClass('working');
			response = data.jqXHR.responseJSON;
			if (response.status == "error"){
				data.context.addClass('error');
				data.context.append('<i class="err-msg">'+response.msg+'</i>');
			}
        },

сервер:
def upload
		begin
			attach = Attachment.new
			attach.pic = params[:file]
			attach.user = current_user
			attach.save!
			render json: '{"status":"success"}'
		rescue
			render json: '{"status":"error","msg":"Ошибка обработки файла."}'
		end
	end
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы