我遇到了一個錯誤:將圓形結構轉換爲JSON
。knockoutJS錯誤:將圓形結構轉換爲JSON
下面是場景 -
我從兩個不同的綁定叫了兩個不同的功能。
按鈕1個綁定 -
event: { keypress: $root.AddComments }
這個功能有如下定義
self.AddComments = function (data, event) {
try {
var Id = 0;
if ($.isNumeric(data.Id)) {
Id = data.Id;
} else {
Id = data.Id();
}
var HdnSaveChanges = document.getElementById('HdnSaveChanges');
HdnSaveChanges.value = "Unsaved";
if (event.which == 13) {
if (data.Comment() != "") {
HdnSaveChanges.value = "Saved";
var Comment1 = { "Description": "" + data.Comment() + "" };
ajaxRequest("post", "/api/myAPI/PostComment/" + (Id || "") + "/" + (loginUserId || ""), Comment1, null)
.done(function (result) {
var newId2 = [result];
var tempComment = new Comment(newId2[0], Id);
tempComment.ParentObj = data;
tempComment.User = tempComment.User();
tempComment.BadgeTypeCss("SmallBadgeType SmallBadgeType" + tempComment.User.BadgeType);
tempComment.CurrentLevelCss("SmallCurrentLevel SmallCurrentLevel" + tempComment.User.CurrentLevel);
var id = ko.utils.arrayFirst(self.ids(), function (currentIds) {
return currentIds.Id() == Id;
});
if (id) {
tempComment.MeLiked = ko.observable(false);
tempComment.MeUnLiked = ko.observable(true);
idea.comments.push(tempComment);
idea.TotalComments(data.TotalComments() + 1);
}
})
.fail(function (jqxhr, textStatus, error) {
console.log("Request Failed" + textStatus + "," + error + ",," + jqxhr.toString());
});
data.Comment("");
}
}
return true;
}
catch (e)
{ }
};
第二個按鈕綁定 - 點擊:$root.SubmitOnClick
和定義是這樣 -
self.SubmitOnClick= function (data, event) {
var Id = 0;
if ($.isNumeric(data.Id)) {
Id = data.Id;
} else {
Id = data.Id();
}
ajaxRequest("post", "/api/myAPI/Update/" + (Id || "") + "/" + (loginUserId || ""), data, null)
.done(function (result) {
var newId3 = [result];
var id1 = ko.utils.arrayFirst(self.ids(), function (currentIds) {
return currentIds.Id() == Id;
});
if (id1) {
id1.MyValue1(newId3[0].MyValue1);
id1.MyValue2(newId3[0].MyValue2);
id1.MyValue3(newId3[0].MyValue3);
id1.TotalValue1(newId3[0].TotalValue1);
id1.TotalValue2(newId3[0].TotalValue2);
id1.TotalValue3(newId3[0].TotalValue3);
id1.Average = ko.computed(function() {
var sum = id1.TotalValue1() + id1.TotalValue2() + id1.TotalValue3();
if (sum > 0) {
return Math.round((sum/3) * 10)/10;
}
else {
return 0;
}
}).extend({ notify: 'always' });
}
})
.fail(function (jqxhr, textStatus, error) {
console.log("Request Failed" + textStatus + "," + error + ",," + jqxhr.toString());
});
}
當我在fi之後調用第二個函數時出現問題第一個功能,但副詩功能正常。
什麼是在這裏發出通告,什麼可能是解決方案。
你能夠創建一個jsfiddle來複制這個問題嗎?因爲目前我認爲這裏沒有足夠的信息來幫助你。還有什麼是數據進入http調用的結構? –
如果它可以有任何幫助,當其中一個對象屬性包含一個指向DOM元素的指針(不能轉換爲JSON)時,會出現此錯誤。我的猜測是'data.Comment'或'data.Id'(你試圖保存爲JSON)包含一個指向DOM元素的指針;例如,如果'data.Id === $('#some-id')'而不是''#some-id''。 – Tyblitz