Есть ли какой-либо предел размера данных POST в Ajax?Jquery

Программирование на jquery
Ответить
Anonymous
 Есть ли какой-либо предел размера данных POST в Ajax?

Сообщение Anonymous »

Я пытаюсь отправить массив данных со своей страницы в действие MVC с помощью jQuery Ajax. Вот мой код 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!!!");
}
});
});


Позвольте мне немного объяснить. У меня есть таблица HTML, которая была построена динамически, и мне нужно сохранить эти данные в базе данных. В jQuery у меня есть цикл, проходящий по таблице, и я сохраняю данные каждой строки в массиве result. Затем я передаю эти данные с помощью Ajax в MVC Action.

И вот здесь начинается моя проблема... Я понял, что иногда все идет так, как должно быть, но иногда я получаю сообщение об ошибке от Ajax alert("Произошла ошибка!!!"); Теперь я понял, что эта ошибка возникает, когда мой массив результатов становится большим. Например: Если он содержит 100-150 элементов > все хорошо, но когда их больше ~150 > ошибка.

Есть ли в Ajax ограничение POST? Как настроить на любой размер? Мне очень нужен этот функционал! Пожалуйста, помогите!

Мой код ActionResult:

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" });
}


ОБНОВЛЕНИЕ: найдено решение

JSON имеет максимальную длину! Мне нужно увеличить это значение. В web.config добавьте следующее:






Подробнее здесь: https://stackoverflow.com/questions/202 ... ze-in-ajax
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»