Như đã nêu điều này xảy ra trong Safari khi Chrome và Firefox hoạt động tốt.Gọi JSON.stringify lỗi cho đối tượng phức tạp trong Safari
Tôi nghĩ rằng đó là vì đối tượng được chuyển thành json có hai thuộc tính chứa đối tượng thời điểm. Tôi đã thay đổi chúng thành đối tượng ngày tháng và hàm stringify
được chuyển.
Điều lạ lùng là nếu tôi cố gắng làm JSON.stringify(moment())
nó đang hoạt động, vì vậy tôi không chắc chắn làm thế nào để gỡ lỗi này và tìm nơi mà vấn đề được.
Đây là một ảnh chụp màn hình của lỗi trong Safari:
Edit:
Sau khi một số lỗi tôi nhận thấy rằng lỗi này xảy ra sau khi một sự kiện dhtmlxwindow onclose
. Tôi tải một phần xem trong một cửa sổ dhtmlx
và trong đó tôi tạo ra đối tượng này được đẩy vào một danh sách intialized vào khung nhìn cha mẹ trước khi đóng cửa sổ.
Trước khi tôi đóng cửa sổ tôi làm JSON.stringify(parent.addedContracts)
và nó làm việc tốt sau sự kiện onclose
xảy ra (tôi không có mã override có) trong danh sách có cùng đối tượng (Tôi đã kiểm tra tất cả các tài sản) nhưng stringify
không cho cùng danh sách.
Edit:
Creation của đối tượng đó của được thêm vào danh sách đi như thế này:
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);
Sau dòng này JSON.stringify
là ok, nhưng khi sự kiện gần xảy ra trên dhtmlxwindow
một cái gì đó thay đổi và stringify
không thành công.
Bạn có thể thử xâu chuỗi các khoảnh khắc trong đối tượng trước khi xâu chuỗi nó? – springbo
Điều đó sẽ sửa chữa nó nhưng tôi không muốn vượt qua tất cả các đối tượng và tài sản của họ trước khi lưu nó bởi vì tôi biết nó sẽ làm việc và điều đó sẽ chỉ làm chậm quá trình lưu. – Aleks
Chỉ để đề cập đến những điều cơ bản, bạn đang thử phiên bản Safari nào? –