Javascript jQuery/CreateJS$.ajax“;位图未定义";

Javascript jQuery/CreateJS$.ajax“;位图未定义";,javascript,jquery,json,createjs,Javascript,Jquery,Json,Createjs,我继承了一个基于CreateJS和jQuery的产品设计器 $.ajax调用封装在名为UrlLoader的函数中 function UrlLoader(params) { $.ajax({ url: url, type: 'POST', data: postData, contentType: "application/x-www-form-urlencoded",

我继承了一个基于CreateJS和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调用的包装器

params是一个JavaScript对象:

创建并保存设计后,系统将按预期工作。 当保存的设计从保存到的同一个源加载,然后再次保存时,ajax调用会自动失败,没有错误

在try…catch块中仅包装$.ajax调用会出现以下错误:

TypeError: bitmap is undefined
初始保存和后续保存的对象几乎相同。两者都包含图像对象的相同dataurl,另一个区别是其中一个具有“id”:12474,元素。两者都是格式正确的JavaScript对象

这个错误似乎是CreateJS错误,在jQueryAjax调用中对我来说没有意义


如何确定此错误的来源?

我发现了问题。使用$.extend从CreateJS对象克隆对象。这显然也克隆了一些未知的CreateJS方法

更改:

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

似乎去掉了不必要的方法调用


关于这项工作的潜在机制的额外反馈将非常棒。

我发现了问题所在。使用$.extend从CreateJS对象克隆对象。这显然也克隆了一些未知的CreateJS方法。将其更改为var postData2=$.extend(true,{},self.params.params);var postData=JSON.parse(JSON.stringify(postData2));似乎去掉了不必要的方法调用。当在js中相等对象时,您是通过引用传递的。当您将JSON.parse与JSON.stringify一起使用时,将为该对象创建一个新的内存指针并通过值传递。
var postData2 = $.extend(true, {}, self.params.params); 
var postData = JSON.parse(JSON.stringify(postData2));