Javascript 在Safari中调用复杂对象的JSON.stringify错误
如前所述,这在Safari中发生,而在Chrome和Firefox中工作正常 我认为这是因为转换成json的对象有两个属性,其中包含一个矩对象。我将它们更改为date对象,并传递了Javascript 在Safari中调用复杂对象的JSON.stringify错误,javascript,json,safari,momentjs,dhtmlx,Javascript,Json,Safari,Momentjs,Dhtmlx,如前所述,这在Safari中发生,而在Chrome和Firefox中工作正常 我认为这是因为转换成json的对象有两个属性,其中包含一个矩对象。我将它们更改为date对象,并传递了stringify函数 奇怪的是,如果我尝试执行JSON.stringify(矩()),它就可以工作了,所以我不知道如何调试它并找到问题所在 以下是Safari中错误的屏幕截图: 编辑: 在一些调试之后,我注意到这个错误发生在dhtmlxwindowonclose事件之后。我在一个dhtmlx窗口中加载了一个局部视图
stringify
函数
奇怪的是,如果我尝试执行JSON.stringify(矩())
,它就可以工作了,所以我不知道如何调试它并找到问题所在
以下是Safari中错误的屏幕截图:
编辑:
在一些调试之后,我注意到这个错误发生在dhtmlxwindowonclose
事件之后。我在一个dhtmlx
窗口中加载了一个局部视图,并在那里创建了这个对象,在关闭窗口之前,它会被推到父视图中初始化的列表中
在关闭窗口之前,我会执行JSON.stringify(parent.adddcontracts)
操作,在onclose
事件发生后(我没有覆盖代码),列表具有相同的对象(我检查了所有属性),但是stringify
对于相同的列表失败
编辑:
创建添加到列表中的对象的过程如下所示:
var contractStartDate = moment(contractStartDateCalendar.getDate(true), "L");
var contractEndDate = moment(contractEndDateCalendar.getDate(true), "L");
var newContract = {
Id : uniqueId,
FunctionDesc : $("#contractFunction").val(),
ContractHours : $("#contractHours").val(),
AdditionalCostFactor: $("#contractAdditionalCostFactor").val().replace(',', '.'),
VacationFormula : contractHolidayCostFactor,
StartDate : contractStartDate,
EndDate : contractEndDate,
Notes : Encoder.htmlEncode(tinyMCE.get('contractNotes').getContent()),
DaysOfWeek : workingDaysString,
PlusMinus : $("#contractTypeDropdown option:selected").data("plusminus"),
SalaryCalculation : $("#contractTypeDropdown option:selected").data("salarycalculation"),
ContractTypeId : $("#contractTypeDropdown").val(),
ContractTypeName : $("#contractTypeDropdown option:selected").text(),
UploadedImageUrl : uploadedSignedContractUrl
};
parent.addedContracts.push(newContract);
在这一行之后,
JSON.stringify
是可以的,但是当关闭事件发生在dhtmlxwindow
上时,一些事情发生了变化,stringify
失败了。无论您的实现如何(并且由于我无法检查在Safari中工作但在Chrome中失败的代码示例),如果您认为在Safari中执行<代码> JSON<代码>是错误的,请考虑使用JSON-PulfSuth/P>
关于将来的问题,请考虑向我们展示最不可行的例子。这不仅可能揭示你所寻求的答案,如果没有,我们可以更容易地描述问题。您可以在字符串化对象之前尝试字符串化对象中的时刻?这会解决问题,但我不想在保存之前传递所有对象及其属性,因为我知道它应该可以工作,这会减慢保存过程。仅介绍基本内容,你在尝试什么版本的Safari?还有一些记录在案的注意事项:制作小提琴或给我们一个重现问题的实时链接,这样我们就不必浪费时间来设置这些来帮助你。这个问题有点奇怪,在没有实际调试的情况下尝试调试是愚蠢的。