【问题标题】:Data is getting lost during $.post$.post 期间数据丢失
【发布时间】:2014-08-31 21:09:37
【问题描述】:

我有一个 <ul> 文章列表 <li> 和一个按钮上的事件处理程序。

单击按钮时,我使用以下方法聚合所有<li>s ID(整数):

data.articles  = $('#category-articles').sortable('toArray');

// alerts 1298
alert(data.articles.length);

$.post(....);

在服务器端:

<?php
// echoes 968
echo sizeof($_POST['articles']);

说清楚:

  • 试图发送数组中的 1298 个项目data.articles
  • 只接收数组$_POST['articles']中的前968

数据在发布操作期间丢失。实际帖子和目标 PHP 之间没有可以过滤或删除任何项目的代码。

我正在使用 apache 和 PHP 5.3。

请求:

Content-Length: up to 80,000 bytes

服务器:

post_max_size = 100M
upload_max_filesize = 100M

我启用了错误报告,但它只是缩小了我的数组,我不明白为什么它没有发送完整的数据。有人有想法吗?

【问题讨论】:

  • 您收到前 968 件商品还是随机订单?
  • @MarcinNabiałek first 订购了 968 件未洗牌的商品。
  • POST 数据的嵌套级别是多少?
  • @MarcinNabiałek 我不是系统管理员,不允许更改配置甚至重新加载服务器配置。我认为 80K 应该适合 100M :/
  • @hindmost 实际上没有嵌套,有一个视图字段,如标题,...然后是文章。

标签: javascript php ajax apache maxlength


【解决方案1】:

Array being chopped off over ajax post. Ajax posting limit? 的重复?

建议与PHP的max_input_vars有关:
此限制仅适用于多维输入数组的每个嵌套级别。

在不编辑服务器配置的情况下解决这个问题:

// Serialize the elements into a single var using join():

data.articles  = $('#category-articles').sortable('toArray').join(';');

在服务器端:

// Unserializing the single variable back into an array:

$articles = explode(';', $_POST['articles']);

分隔符;不得出现在元素内部,如果有问题,请选择其他字符。

【讨论】:

  • 值为1000!
  • 这应该是评论,而不是回答
  • 道歉@hindmost - 我没有 50 个代表。我认为这可能有用,所以想以某种方式做出贡献!
  • @DanFromGermany 正如你在上面写的,articles 旁边还有一些字段。所以他们很可能会消耗剩余的限制 (1000 - 968 = 32)
  • @DaveSalomon 我可以将我的解决方案编辑成您的问题吗?
猜你喜欢
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
相关资源
最近更新 更多