Недочёт в wa.core.js Исправлено

5

В wa.core.js устанавливается общий обработчик ajax-ошибок

    $(document).ajaxError(function(e, xhr, settings, exception) {
        // Ignore 502 error in background process
        if (xhr.status === 502 && exception == 'abort' || (settings.url && settings.url.indexOf('background_process') >= 0) || (settings.data && settings.data.indexOf('background_process') >= 0)) {
            console && console.log && console.log('Notice: XHR failed on load: '+ settings.url);
            return;
        }

Однако settings.data не всегда строка или массив и в этом случае проверка settings.data.indexOf('background_process') вызывает ошибку.

Получить такое можно если в методе $.ajax создавать собственный xhr объект, который будет в качестве data использовать объект FormData. Такое нужно, например, при реализации загрузки файлов. Если в список загружаемых файлов добавить файл, который невозможно прочесть (чтобы вызывать ошибку и её обработчик), то в консоль вывалится ошибка js об отсутствии метода indexOf и выполнение обработчика аварийно завершится.

Хорошо бы settings.data проверять на typeof или наоборот instanceof FormData.

1 комментарий

  • +1
    Михаил Ушенин Михаил Ушенин Webasyst 23 марта 2023 14:47 #

    Мы выпустили обновление фреймворка Webasyst, в котором улучшили обработку ошибок AJAX-запросов в файле wa.core.js. Обновление можно установить в «Инсталлере».

    Проверьте, пожалуйста. Сообщите нам, если проблема сохранилась.

    Спасибо вам за то, что помогаете улучшать программные продукты Webasyst!

    Добавить комментарий

    Чтобы добавить комментарий, зарегистрируйтесь или войдите