Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый Сегодня, 15:19
Аспирант
Отправить личное сообщение для maiskiykot Посмотреть профиль Найти все сообщения от maiskiykot
 
Регистрация: 11.09.2018
Сообщений: 37

Прошу помощи с ajax
Достался мне код, но он почему-то ничего не кидает. Помогите поправить запрос, чтобы отправлял на сервер файл. Просто колесико крутит и скриншот файла показывает. Всем спасибо!

async function load_preview_files(orderid, input) {
    // Преобразуем FileList в массив
    const files = Array.from(input.files);

    // Создаем копию input для очистки
    const originalInput = input;

    try {
        // Массив промисов для загрузки
        const uploadPromises = files.map(async (file, i) => {
            // Создаем FormData для каждого файла
            const formData = new FormData();
            formData.append('action', 'preload_order_files');
            formData.append('file', file);
            const id = Math.floor(Math.random() * 100);
            formData.append('fileid', id);
            formData.append('orderid', orderid);

            // Показываем превью файла
            preview_order_files_thumbs(file, id);

            try {
                // Асинхронная загрузка файла с использованием XMLHttpRequest
                const xhr = new XMLHttpRequest();

                // Добавляем обработку прогресса загрузки
                xhr.upload.addEventListener('progress', function (event) {
                    if (event.lengthComputable) {
                        var percentComplete = (event.loaded / event.total) * 100;

                        // Обновляем прогресс-бар
						if(percentComplete>99){
							$('#preloaded_file_orderfile_id' + id).find('progress').val(100);
                        	$('#preloaded_file_orderfile_id' + id).find('.loading_progress').text(`загружен, проверяем файл...`);
						}
						else{
							$('#preloaded_file_orderfile_id' + id).find('progress').val(percentComplete);
							$('#preloaded_file_orderfile_id' + id).find('.loading_progress').text(`${Math.round(percentComplete)}%`);
						}
                        
                    }
                });

                // Обработка завершения загрузки
                xhr.onreadystatechange = function () {
                    if (xhr.readyState === 4) {
                        if (xhr.status === 200) {
                            const result = JSON.parse(xhr.responseText);


							$('#preloaded_file_orderfile_id' + id).replaceWith(`
								<div class="col-12 __onlyforthumbs_file" id="preloaded_file_orderfile_id${result.imgid}">
								<input type="hidden" name="fileattaches[]" value="${result.imgid}">
								<div class="uploaded-file ">
								<button type="button" class="remove-file" onclick="remove_file(${result.imgid});"><svg class="icon icon-close-circle"><use xlink:href="/img/sprite.svg#close-circle"></use></svg></button>
								<span class="uploaded-file__name">${result.preview}</span><span class="uploaded-file__weight">${result.filesize}</span></div></div>`);

                            $('#submit_chat_btn').removeAttr('disabled');
                        } else {
                            console.error('Upload failed:', xhr.statusText);
                        }
                    }
                };

                // Настройка запроса
                xhr.open('POST', '', true);

                // Отправляем запрос
                xhr.send(formData);
            } catch (error) {
                console.error(`Error uploading file ${file.name}:`, error);
                return null;
            }
        });

        // Ожидаем загрузку всех файлов
        const results = await Promise.all(uploadPromises);

        // Очищаем input
        originalInput.value = '';

        return results;
    } catch (error) {
        console.error('Upload process failed:', error);
    }
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помощи в оптимизации кода eagle_nest Общие вопросы Javascript 0 07.10.2017 16:13
Отправка файла на email при помощи Ajax vah-smile AJAX и COMET 6 19.11.2016 16:41
Прошу помощи, вызов нескольких функций из input, ajax alagor Общие вопросы Javascript 2 10.02.2016 17:35
Прошу помощи xavi AJAX и COMET 8 28.01.2013 10:36
Прошу помощи xavi Работа 3 25.01.2013 13:06