$ .post期间数据丢失

时间:2014-07-10 13:10:23

标签: javascript php ajax apache maxlength

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

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

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

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

$.post(....);

在服务器端:

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

说清楚:

  • 尝试在数组data.articles
  • 中发送 1298
  • 仅接收数组$_POST['articles']
  • 中的第一个 968

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

我正在使用apache和PHP 5.3。

请求:

Content-Length: up to 80,000 bytes

服务器:

post_max_size = 100M
upload_max_filesize = 100M

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

1 个答案:

答案 0 :(得分:3)

重复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']);

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