当前位置: 首页 > 面试题库 >

Ajax中的POST数据大小是否有限制?

齐招
2023-03-14
问题内容

我正在尝试使用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数组中每一行的数据存储起来。然后,我使用Ajax将这些数据传递到MVC
Action中。

这是我的问题开始的地方…我已经意识到有时会按预期进行,但是有时我会从Ajax中收到错误消息alert("An error has occured!!!");现在我已经了解到,当result数组变大时会发生此错误。例如:如果包含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中添加以下内容:

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

问题答案:

JSON的最大长度!我需要增加这个值。在web.config中添加以下内容:

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


 类似资料:
  • 问题内容: 我知道可以通过以下方法在Flask中设置请求大小的整体限制: 但是我想确保一个特定的路由将不接受特定大小的POST数据。 问题答案: 你需要检查一下特定路线本身;你可以随时测试内容长度;是一个或整数值: 在访问请求中的表单或文件数据之前,请执行此操作。 你可以将其变成装饰器以供查看: 然后将其用作: 本质上这就是Flask所做的;当你尝试访问请求数据时,在尝试解析请求正文之前,首先检查

  • 问题内容: 我正在使用Drupal,我注意到如果聚合了我的CSS文件,那么CSS不一定会正常工作。我知道IE7中存在问题,但IE9中的CSS文件大小是否有限制? 问题答案: 有3个限制: 一个工作表最多可以包含4095个选择器,请参阅 http://demos.telerik.com/testcases/4095issues.html 一张纸最多可以导入31张纸,请参见http://demos.t

  • 问题内容: 进程的大小是否有限制?它是否仅取决于机器的性能?我想知道这一点,以限制对函数的递归调用的深度。 谢谢。 问题答案: 堆栈通常受资源限制的限制。您可以使用以下命令查看安装的默认设置: (这表明我的是8MB,这是巨大的)。 如果删除或增加该限制,您仍将无法使用计算机中的所有RAM作为堆栈- 堆栈从进程地址空间顶部附近的一点向下增长,并在某个时刻它将运行到您的代码,堆或已加载的库中。

  • 问题内容: 我通过Ajax将ckeditor内容发布到php。但是在我的数据库表中得到4-5句已发布材料的句子。我想知道,ajax发布有大小限制吗?有什么办法可以通过ajax发布大文本内容? 我的js看起来像这样 问题答案: HTTP规范没有为帖子强加特定的大小限制。它们通常会受到Web服务器或用于处理表单提交的编程技术的限制。 您使用哪种服务器?

  • 问题内容: 我有一个字符串定义为 字串xx 我可以分配的字符数有限制吗? 2)我正在将用户输入分配给此字符串xx。70%的人只说一个字。有时他们会说一个大句子,所以想知道可以吗?还是有更好的Java做法? 问题答案: 您可能已经搜索过一个常见问题,但无论如何我都会再次回答。 我可以分配的字符数有限制吗? 它的Integer.MAX_VALUE或2 ^ 31-1或大约20亿。在达到此大小之前,您更有

  • 问题内容: 我们可以拥有任何大小的Java对象而不必担心异常吗?我将使用一个类的对象,该类由成千上万个包含s和s以及许多其他非原始类型的其他对象组成。 谢谢 问题答案: Java Heap是对您可以在系统中拥有的对象大小的限制。 如果对象的大小超出堆大小,则会生成“内存不足”错误。 在您的情况下,总对象的大小(ArrayList中的对象+系统中其他对象)的重要性更大,因为ArrayList只是引用