jQuery / Create JS $. ajax "растровое изображение не определено" - PullRequest
1 голос
/ 17 января 2020

Я унаследовал конструктор продуктов на основе JS и jQuery.

Вызов $. ajax заключен в функцию с именем UrlLoader

function UrlLoader(params) {
        $.ajax({
            url: url,
            type: 'POST',
            data: postData,
            contentType: "application/x-www-form-urlencoded",
            beforeSend: function () {
                 console.log('sending');
            },
            success: function (result) {
                self.sucess(result);              
            },
            error: function (xhr) {
                console.log("Error: " + xhr.statusText);
            }

        }).fail(function () {
            self.showError("Can't load remote data");
        });
}

Функция UrlLoader (params) не выполняет никакой другой функции, кроме как в качестве оболочки для $. ajax call.

params - это объект JavaScript:

Когда проект создается и сохраняется, система работает должным образом. Когда сохраненный дизайн загружается из того же источника, он был сохранен, а затем сохранен снова, вызов ajax молча завершается сбоем без ошибок.

Завершение только вызова $. ajax при попытке .. Блок .catch выдает ошибку:

TypeError: bitmap is undefined

Объекты как для первоначального сохранения, так и для последующего сохранения практически идентичны. Оба содержат один и тот же dataurl объекта изображения, и другое отличие состоит в том, что один имеет «id»: 12474, element. Оба имеют правильный формат JavaScript объектов.

Ошибка, похоже, ошибка Create JS, которая не имеет смысла для меня при вызове jQuery ajax.

Как я могу определить источник этой ошибки?

1 Ответ

1 голос
/ 17 января 2020

Я нашел проблему. Объект клонируется из объекта Create JS с использованием $ .extend. Это, очевидно, также клонирует некоторый неизвестный метод Create JS.

Изменение:

var postData2 = $.extend(true, {}, self.params.params); 

Кому:

var postData2 = $.extend(true, {}, self.params.params); 
var postData = JSON.parse(JSON.stringify(postData2)); 

, похоже, удаляет ненужные вызовы методов.

Дополнительные отзывы о базовом механизме того, почему это сработало, были бы потрясающими.

...