POST 数据被缩短

Posted

技术标签:

【中文标题】POST 数据被缩短【英文标题】:POST data being cut short 【发布时间】:2015-08-15 05:54:07 【问题描述】:

似乎当我 .post() 一个大数组时,很多信息都被删除了。在下面的代码 sn -p 中,第一个 .html() 显示了所有数组数据,而 php 的返回结果只显示了一部分数据。

javascript

$('.inner').html(JSON.stringify(dbData));
$.post( "test.php", 'filename' : filename, 'dbData' : dbData, function(result) 
         $('.inner').html(result);
);

PHP:

ini_set('display_errors', 'On');

$filename = $_POST['filename'];
$dbData = $_POST['dbData'];

$file = $myfile = fopen($filename, 'w');

echo json_encode($dbData);

php.ini 的 post_max_size = 8M,而我发送的数据远小于 8M。

编辑:数组中的数据似乎在某个点后被切断。没有错误。

【问题讨论】:

这可能是因为您的 php.ini 文件中的数据大于post_max_size。您还可以检查您的 max_upload_size 配置。另一种方法是检查错误日志,看看是否可以从那里发现问题。此外,请确保您正在查看正确的 php.ini 文件(您可能有多个文件)。您还应该注意到,在您修改 php.ini 中的任何设置后,您需要重新启动网络服务器才能使更改生效。 发帖时产生的错误是什么?您无需检查这些 POST 元素是否存在。 $filename = isset($_POST['filename'])?$_POST['filename']:""; $dbData = isset($_POST['dbData'])?$_POST['dbData']:""; if(!empty($filename) && !empty($dbData)) ... 没有错误,只是缺少数组的整个值, @FuzzyStatic,截止后的下两个字符是什么?数据通过的长度是多少? 【参考方案1】:

尝试增加max_input_vars 的值。我相信默认是 1000。

我曾遇到过几次这样的问题,即为数据库表中的每一行生成一个包含一个或多个字段的表单,当它增长到数百行时,后面的表单字段就会被砍掉。

虽然您似乎只为此使用了一个 POST var $_POST['dbData'],但如果 AJAX 请求将 dbData 的每个元素作为单独的 &dbData[]=... 参数发送,那将被计算多次。

【讨论】:

非常感谢!这解决了我的问题!

以上是关于POST 数据被缩短的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery Ajax Post 的 Firebase URL 缩短器?

使用 Java 写入文本文件会被缩短

如何改善数据库的结构,以及如何使用索引来缩短搜索时间

Invoke-SqlCmd 缩短结果

Oracle中使用View能缩短查询的时间么

记一次curl post请求数据被截断问题处理