Ряд наших пользователей по-прежнему находятся на IE8. Некоторые из них иногда сообщают о проблемах при попытке отправить данные на наши серверы (через большую кнопку с надписью «SAVE»).НокаутJS с IE8, случайные проблемы с Stringify?
Существует ошибка сценария, что IE8 показывает, что: Неожиданный вызов метода или свойства доступа, всегда указывая на той же строке в KnockoutJS 2.2.0 (Debug, на данный момент) библиотеки, строка 450, которая выглядит следующим образом:
return JSON.stringify(ko.utils.unwrapObservable(data), replacer, space);
метод в моем коде, который находится в корневом каталоге трассировки стека, где это происходит:
self.saveSingle = function (onSuccess, onFailure) {
ko.utils.arrayForEach(self.days(), function (day) {
day.close();
});
var jsonData = ko.toJSON(self);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: applicationLocation + "/api/assignmentapi/save",
data: jsonData,
success: function (data) {
self.status(data.Status);
self._isDirty(false);
ko.utils.arrayForEach(self.days(), function (day) {
day.clean();
});
if (onSuccess)
onSuccess();
},
error: function (data) {
onFailure();
},
dataType: "json"
});
};
Мы раздеться ряд свойств, которые не являются необходимыми к нашему POST, когда мы преобразуем объект для JSON, используя этот подход: http://www.knockmeout.net/2011/04/controlling-how-object-is-converted-to.html
OurType.prototype.toJSON = function() {
var copy = ko.toJS(this);
delete copy.someUnneededProperty1;
delete copy.someUnneededProperty2;
delete copy.someUnneededProperty3;
delete copy.someUnneededProperty4;
return copy;
}
Когда он терпит неудачу, он не последовательно на линии
var jsonData = ko.toJSON(self);
Сейчас здесь идет настоящая неразбериха:
- Это не последовательно происходит
- Этого не происходит со всеми пользователями IE8
- Мы не можем последовательно воспроизвести его
- Структура нашей модели, мы сериализации не появляется материя
- jscript.dll текущая версия для IE8
Мы включаем json2 для пользователей IE7. Пользователь IE7 не сообщил о проблеме; только пользователи IE8. – reallyJim
Интересно. Может ли быть, что пользователи IE8 фактически работают в режиме эмуляции IE7 (совместимость с IE-страницей)? –
Наш персонал QA * иногда * способен воспроизвести его, и он находится в режиме IE8, когда они это делают. – reallyJim