Недочёт в 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.

0 комментариев

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

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