ฉันได้รับข้อผิดพลาดนี้:
คำร้องขอ JSON มีขนาดใหญ่เกินกว่าที่จะทำการ deserialized
นี่คือสถานการณ์ที่เกิดขึ้น ฉันมีชั้นของประเทศที่เก็บรายชื่อของพอร์ตการขนส่งของประเทศนั้น
public class Country
{
public int Id { get; set; }
public string Name { get; set; }
public List<Port> Ports { get; set; }
}
ฉันใช้ KnockoutJS ทางฝั่งไคลเอ็นต์เพื่อสร้างรายการแบบหล่นลง ดังนั้นเรามีอาร์เรย์ของดรอปดาวน์สองตัวโดยที่อันแรกคือประเทศและอันที่สองคือพอร์ตของประเทศนั้น
ทุกอย่างทำงานได้ดีจนถึงตอนนี้สคริปต์ฝั่งไคลเอ็นต์ของฉัน:
var k1 = k1 || {};
$(document).ready(function () {
k1.MarketInfoItem = function (removeable) {
var self = this;
self.CountryOfLoadingId = ko.observable();
self.PortOfLoadingId = ko.observable();
self.CountryOfDestinationId = ko.observable();
self.PortOfDestinationId = ko.observable();
};
k1.viewModel = function () {
var marketInfoItems = ko.observableArray([]),
countries = ko.observableArray([]),
saveMarketInfo = function () {
var jsonData = ko.toJSON(marketInfoItems);
$.ajax({
url: 'SaveMarketInfos',
type: "POST",
data: jsonData,
datatype: "json",
contentType: "application/json charset=utf-8",
success: function (data) {
if (data) {
window.location.href = "Fin";
} else {
alert("Can not save your market information now!");
}
},
error: function (data) { alert("Can not save your contacts now!"); }
});
},
loadData = function () {
$.getJSON('../api/ListService/GetCountriesWithPorts', function (data) {
countries(data);
});
};
return {
MarketInfoItems: marketInfoItems,
Countries: countries,
LoadData: loadData,
SaveMarketInfo: saveMarketInfo,
};
} ();
ปัญหาเกิดขึ้นเมื่อประเทศเช่นจีนถูกเลือกซึ่งมีจำนวนมากของพอร์ต ดังนั้นถ้าคุณมี "China" 3 หรือ 4 เท่าในอาร์เรย์ของคุณและฉันต้องการส่งไปยังเซิร์ฟเวอร์เพื่อบันทึก ข้อผิดพลาดเกิดขึ้น
ฉันควรทำอย่างไรเพื่อแก้ไขปัญหานี้