【问题标题】:How to Send huge amount of data from AJAX to controller in MVC?如何将大量数据从 AJAX 发送到 MVC 中的控制器?
【发布时间】:2018-02-21 07:41:47
【问题描述】:

我正在使用 AJAX 将选定的复选框数据发送到控制器。对于少数记录,它可以正常工作,但对于大量和大量记录,它没有向控制器发送任何数据。如何解决这个问题?目前我正在发送 55 条记录,将来会增加。请帮忙。编码如下。

function Continue() {
  var arrSchd=[];
  var selectedIds="";
  var table = $('#Details').DataTable();

  table.$('input[type="checkbox"]:checked').each(function(index,val){
    var SchdId=$(this).val();
    arrSchd.push(SchdId);
  })

  if(arrSchd.length!=0){
    selectedIds=arrSchd.toString();
    WaitCursorStart();
    $.ajax({
      url: "/MultipleEdit/MultiEditChange",
      data:{"selectedIds":selectedIds,"STime": $('#STime').val(),"ETime": $('#ETime').val()},
      type: 'GET',
      contentType: 'application/json;',
      dataType: 'json',
      success: function (result) {
        if (result.success == 'success') {
          //some process here
        } else {
          //some process here
        }
      }
    });
  }
}

我什至也尝试过type:'POST'。仍然无法处理大量数据。

【问题讨论】:

  • 你遇到了什么异常?
  • 我从来没有遇到任何异常。我在发送数据之前使用了加载游标 gif,并且在数据返回成功或失败结果后,游标将停止。现在加载光标只运行,所以我使用 firebug 调试,我发现数据没有发送到控制器
  • 如果选择的记录是少数意味着它工作正常
  • 听起来没那么大。多少KB?我敢打赌,大多数文件上传都更大。大小不太可能成为问题,除非您的查询字符串太长。您绝对应该为此使用 POST。确保您的 Action 方法具有 [HttpPost] 属性。并删除 contentType: 'application/json;'。如果您仍有问题,请向我们展示您的控制器方法。
  • @Halim 通常 MVC 似乎更喜欢以常规的 form-urlencoded 格式而不是 JSON 接收数据(jQuery 在发送之前为您编码数据对象,使用默认的 form-urlencoded 格式,或者您在 contentType 选项中指定的格式)。有关更多详细信息,请参阅“contentType”选项下的api.jquery.com/jquery.ajax。附言一般来说,如果你不理解一个选项,你可能不应该使用它,或者应该阅读文档:-)

标签: javascript jquery json ajax asp.net-mvc


【解决方案1】:

我在 AJAX 和 Controller 中删除了内容类型并将我的内容类型更改为 POST。它正在工作。

下面是我的更新答案

function Continue() {
  var arrSchd=[];
  var selectedIds="";
  var table = $('#Details').DataTable();

  table.$('input[type="checkbox"]:checked').each(function(index,val){
    var SchdId=$(this).val();
    arrSchd.push(SchdId);
  })

  if(arrSchd.length!=0){
    selectedIds=arrSchd.toString();
    WaitCursorStart();
    $.ajax({
      url: "/MultipleEdit/MultiEditChange",
      data:{"selectedIds":selectedIds,"STime": $('#STime').val(),"ETime": $('#ETime').val()},
      type: 'POST',
      dataType: 'json',
      success: function (result) {
        if (result.success == 'success') {
          //some process here
        } else {
          //some process here
        }
      }
    });
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多