Ajax에서 POST 데이터 크기 제한이 있습니까?
저는 jQuery Ajax를 사용하여 제 페이지의 데이터 배열을 MVC Action으로 보내려고 합니다.여기 제 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
array. 그러면 이 데이터를 Ajax를 사용하여 MVC Action으로 전달합니다.
그리고 여기서 내 문제가 시작됩니다.저는 가끔은 원래대로 될 때도 있다는 것을 깨달았지만, 가끔은 Ajax에서 오류가 발생합니다.alert("An error has occured!!!");
이제 이 오류가 발생한다는 것을 이해했습니다.result
배열이 커지고 있습니다.예를 들어,100-150개 이상이면 다 좋은데 ~150개 이상이면 >오류입니다.
아약스에 POST 제한이 있습니까?어떤 사이즈라도 어떻게 설정할 수 있습니까?이 기능이 꼭 필요해요!도와주세요!
내 작업 결과 코드:
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에서 다음을 추가합니다.
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
</appSettings>
JSON은 최대 길이입니다!저는 이 가치를 높여야 합니다.web.config에서 다음을 추가합니다.
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
</appSettings>
아약스에서 POST 제한이 있습니까?
아니요, HTTP 규격은 게시물에 대해 특정 크기 제한을 두지 않습니다.그러나 양식 제출을 처리하는 데 사용하는 웹 서버 또는 프로그래밍 기술에 따라 달라집니다.
ASP.NET MVC에서는 다음을 시도할 수 있습니다.
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1000000" />
</requestFiltering>
</security>
HTTP 규격은 POST 데이터 크기의 제한을 정의하지 않습니다.
ASP를 이용해서.NET MVC, POST 데이터 제한이 있을 수 있습니다. 웹에서 데이터 제한을 늘리십시오.구성 파일:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1000000" />
</requestFiltering>
</security>
MSDN에서:
요청의 최대 내용 길이를 바이트 단위로 지정합니다.기본값은 30000000입니다.
이로써 문제가 해결되었습니다.
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483647" />
</webServices>
</scripting>
</system.web.extensions>
클라이언트 측 제한이 있는 경우 브라우저에 따라 다르지만 HTTP 규격은 POST 데이터 크기의 제한을 정의하지 않습니다.
POST는 네트워크 전체에서 바이트에 불과하므로 게시하는 필드가 많을수록 해당 데이터를 업로드하는 데 더 오랜 시간이 걸릴 수 있습니다.
기존 양식 제출을 사용할 경우 1MB POST는 사용자가 양식이 깨지고 응답이 없는 것처럼 느끼게 합니다.
할 수 있는 분야가 많은 경우.serialize()
그러면 AJAX는 모든 데이터를 수집하는 동안 브라우저를 끊을 수 있습니다.브라우저는 전반적으로 자바스크립트에 대한 메모리 제한이 있기 때문에 그 제한에 도달하면 AJAX 프로세스가 실패한다고 생각합니다.
// wanna have some fun?
var html = '<div></div>';
for(var i = 0; i < 1000000; i++){
html += html;
}
문제가 발생하지 않도록 서버 측에서 허용할 수 있는 최대 POST 크기를 늘리는 것이 가장 좋습니다.
가장 일반적인 문제는 사용자가 125KB/s 업로드 링크에서 3MB 사진의 속도가 느려지는 이유에 대해 혼란스러워하는 동안 단순히 걸려있는 것처럼 보이는 업로드 스크립트를 만들 때 발생합니다.
서버 'max_post_size' 또는 이와 유사한 이름을 통해 제한을 설정합니다.일반적인 기본 서버 설정은 한 게시물에서 2-8MB입니다.
클라이언트 측에서는 GET만 최대 제한을 갖는데, 일반적으로 1500바이트(요청 헤더에서 30~150바이트 제외)로 간주되며, 그 이유는 더 낮은 수준의 네트워크 하드웨어에서 MTU를 사용하기 때문입니다.
제 경우에는 제가 게시하고 있던 클래스가 부동산에 '내부 설정'되어 있었습니다.
변경됨:
public EnabledDataBundle EnabledDataBundle { get; internal set; }
대상:
public EnabledDataBundle EnabledDataBundle { get; set; }
언급URL : https://stackoverflow.com/questions/20249587/is-it-any-limit-for-post-data-size-in-ajax
'programing' 카테고리의 다른 글
std:: 문자열을 사용한 printf? (0) | 2023.09.09 |
---|---|
잠금 테이블을 수행할 때 원격 사용자의 액세스가 거부됨 (0) | 2023.09.09 |
Angular CLI 6: angular.json에서 Sass 컴파일을 추가하려면 어떻게 해야 합니까? (0) | 2023.09.09 |
구조 sockaddr_un vs sockaddr (0) | 2023.09.09 |
UI 레이블에서 텍스트의 픽셀 너비 (0) | 2023.09.09 |