Bazı kullanıcılarımız hala IE8 üzerindedir. Bazıları zaman zaman sunucularımıza veri göndermeye çalışırken ("KAYDET" etiketli büyük bir düğmeyle) sorunları bildiriyorlar.IE8 ile KnockoutJS, Stringify ile ara sıra sorunlar?
olduğunu IE8 gösteriyor ki bir komut dosyası hatası vardır: yöntem veya özellik erişimi-Beklenmedik çağrı, hep kütüphane, hat 450, (şimdilik, hata ayıklama) KnockoutJS aynı çizgiye 2.2.0 işaret hangi aşağıdaki gibidir:
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"
});
};
Biz gerekli olmayan bir takım özelliklerinin dışında şerit yapın:
return JSON.stringify(ko.utils.unwrapObservable(data), replacer, space);
Bu durumda yığın izleme kökünde benim kod yöntemi şudur dönüştürdüğümüz gibi POST'umuza Bu yaklaşımı kullanarak, JSON itiraz: Bu, bu hat üzerinde sürekli başarısız başarısızhttp://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);
işte gerçek karmaşa gelir:
- O değil
- sürekli olarak gerçekleşiyor Bu, tüm IE8 kullanıcıları için geçerli değildir
- Biz sürekli hiçbir fikrim yok IE8
IE7 kullanıcıları için json2'yi dahil ediyoruz. IE7 kullanıcısı bir sorun bildirmedi; sadece IE8 kullanıcıları. – reallyJim
İlginç. IE8 kullanıcılarının aslında IE7 öykünme modunda (IE sayfası uyumluluğu) çalıştırılması olabilir mi? –
QA personelimiz, * bazen * çoğaltabiliyor ve bunu yaptıklarında IE8 modunda. – reallyJim