【问题标题】:Can't send a large object from AJAX to controller [duplicate]无法将大对象从 AJAX 发送到控制器 [重复]
【发布时间】:2020-02-05 10:02:03
【问题描述】:

我对控制器操作方法进行了以下 AJAX 调用:

$.ajax({
  type: "POST",
  url: "/BasesDados/Produtos/EditarProduto",
  data: { 
    objProduto: objProduto, 
    listProdutoLinguas: produtoLinguas, 
    listCoresTamanhos: corTamanhos, 
    atributoIDs: attIDs 
  },
  success: function (res) {
    // ..do something
  }
});

我在调用 AJAX 函数之前填充脚本中的对象。 它工作正常并将数据发送到控制器,除非它有大量数据要发送。在特定的错误情况下,对象“corTamanhos”填充了 261 个元素(它是一个对象数组),在这种特殊情况下,AJAX 调用失败,它永远不会将请求发送到服务器。

我已经尝试了很多东西,比如 JSON.serialize,使用 formData 元素,我快绝望了。

查看控制台后发现报错为Exception,如下:

“InvalidDataException:超出表单值计数限制 1024。”

我该如何克服这个问题?

有人可以帮忙吗?

非常感谢您。

【问题讨论】:

  • 当您说“它失败”和“它从不向服务器发送请求”时,您是否检查过控制台是否有任何错误?发出请求后还要检查控制台的网络选项卡,看看它是否实际发送但服务器拒绝它。然后你可以从那里调试问题。
  • 好吧,我知道它永远不会到达服务器,因为我在调试模式下运行,并且在 Action Method 中有多个断点,它永远不会被调用。对于其他数据少一点的情况,它运行完美。
  • 这并不意味着没有提出请求。这意味着您的代码没有被命中。请求被正确发送是完全有可能的,但服务器出于多种原因拒绝它,例如。请求大小太大,模型绑定器无法使用的数据/格式无效,授权问题。这就是为什么你需要调试你得到的实际响应。
  • 是的,你是对的。同时,我发现错误是一个异常:InvalidDataException: Form value count limit 1024 exceeded。更新了原帖。
  • 在那种情况下try this

标签: jquery arrays json ajax asp.net-core-2.0


【解决方案1】:

感谢 cmets 中的@Rory McCrossan 指导,我能够找到问题并解决它。

抛出异常是因为表单提交的默认大小限制为 1024。

我可以在 Startup 类中设置它,就像这篇文章中解释的那样: https://stackoverflow.com/a/50077801/8796120

谢谢你!!

【讨论】:

    猜你喜欢
    • 2017-07-21
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多