Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Safari中调用复杂对象的JSON.stringify错误_Javascript_Json_Safari_Momentjs_Dhtmlx - Fatal编程技术网

Javascript 在Safari中调用复杂对象的JSON.stringify错误

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窗口中加载了一个局部视图

如前所述,这在Safari中发生,而在Chrome和Firefox中工作正常

我认为这是因为转换成json的对象有两个属性,其中包含一个矩对象。我将它们更改为date对象,并传递了
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?还有一些记录在案的注意事项:制作小提琴或给我们一个重现问题的实时链接,这样我们就不必浪费时间来设置这些来帮助你。这个问题有点奇怪,在没有实际调试的情况下尝试调试是愚蠢的。