Как уже говорилось, это происходит в Safari, а в Chrome и Firefox все работает нормально.
Я думаю, это потому, что объект, который превратился в json, имеет два свойства, которые содержат объект момента. Я изменил их на объект даты, и функция stringify
прошла.
Странно то, что если я попытаюсь выполнить JSON.stringify(moment())
, это сработает, поэтому я не уверен, как это отладить и найти, в чем проблема.
Вот скриншот ошибки в Safari:
Изменить:
После некоторой отладки я заметил, что эта ошибка возникает после события dhtmlxwindow onclose
. Я загружаю частичное представление в окно dhtmlx
и создаю там этот объект, который помещается в список, инициализированный в родительском представлении, перед закрытием окна.
Прежде чем закрыть окно, я делаю JSON.stringify(parent.addedContracts)
, и после события 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
терпит неудачу.