Est-ce une limite pour la taille des données POST dans Ajax?

Je suis en train d'envoyer un tableau de données à partir de ma page à la MVC Action à l'aide d'Ajax de jQuery. Voici mon code jQuery:

$('#btnSave').click(
function () {
result = [];
$('#tblMatters tbody tr.mattersRow').each(function () {
if (!($(this).hasClass('warning'))) {
var item = {};
if ($(this).find('td.qbmatter > div.dropdown').length > 0) {
item.QBDescription = $(this).find('td.qbmatter > div.dropdown > a').text();
} else {
item.QBDescription = $(this).find('td.qbmatter').text();
}
var id = $(this).find("td:first > a").text();
item.Narrative = $("#collapse" + id).find("div.scrollCell").text();
item.WorkDate = $(this).find('td.workDate').text();
item.Hours = $(this).find('td.hours').text();
item.Person = $(this).find('td.person').text();
if ($(this).find('td.rate > div.dropdown').length > 0) {
item.Rate = $(this).find('td.rate > div.dropdown > a').text();
} else {
item.Rate = $(this).find('td.rate').text();
}
item.Amount = $(this).find('td.amount').text();
result.push(item);
}
});
var originalRecords = $("#tblSummary tr.summaryTotalRow td.summaryOriginalRecords").text();
var originalHours = $("#tblSummary tr.summaryTotalRow td.summaryOriginalHours").text();
var excludedHours = $("#tblSummary tr.summaryTotalRow td.summaryExcludedHours").text();
var totalHours = $("#tblSummary tr.summaryTotalRow td.summaryTotalHours").text();
$.ajax({
url: "/Home/SaveQBMatter",
type: "POST",
data: JSON.stringify({ 'Matters': result, 'originalRecords': originalRecords, 'originalHours': originalHours, 'excludedHours': excludedHours, 'totalHours': totalHours }),
dataType: "json",
traditional: true,
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data.status == "Success") {
alert("Success!");
var url = '@Url.Action("Index", "Home")';
window.location.href = url;
} else {
alert("Error On the DB Level!");
}
},
error: function () {
alert("An error has occured!!!");
}
});
});

Permettez-moi d'expliquer un peu. J'ai un tableau HTML qui a été construit de manière dynamique et j'ai besoin de stocker ces données dans une base de données. En jQuery, j'ai une boucle en passant par la table et je stocker des données de chaque ligne dans la result tableau. Puis-je transmettre ces données à l'aide d'Ajax en MVC Action.

Et c'est là que mon problème commence... je me suis rendu compte que parfois, il va comme il se doit, mais parfois, j'obtiens une erreur de l'Ajax alert("An error has occured!!!"); Maintenant, j'ai compris que cette erreur se produit lorsque mon result tableau devient grand. Par exemple: Si elle contient de 100 à 150 objets > tout est bon, mais quand il y a plus de ~150 > Erreur.

Est-il un POST limite en Ajax? Comment puis-je mettre en place pour toutes les tailles? J'ai vraiment besoin de cette fonctionnalité! Toute aide, s'il vous plaît!

Mon ActionResult Code:

public ActionResult SaveQBMatter(QBMatter[] Matters, string originalRecords, string originalHours, string excludedHours, string totalHours) {
DBAccess dba = new DBAccess();
int QBMatterID = 0;
int exportedFileID = 0;
foreach (QBMatter qb in Matters) {
dba.InsertQBMatter(qb.QBDescription, qb.Narrative, qb.WorkDate, qb.Person, qb.Hours, qb.Rate, qb.Amount, ref QBMatterID);
}
ExcelTranslator translator = new ExcelTranslator();
translator.CreateExcelFile("", Matters, originalRecords, originalHours, excludedHours, totalHours);
return Json(new { status = "Success", message = "Passed" });
}

Mise à JOUR: Trouvé une solution

JSON a une longueur maximum! J'ai besoin d'augmenter cette valeur. Dans le web.config ajouter les éléments suivants:

<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
</appSettings>

source d'informationauteur Bryuk | 2013-11-27