POST数据被截断

3

看起来当我使用.post()方法提交一个大的数组时,很多信息被移除了。在下面的代码片段中,第一个.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 中的任何设置之后,你需要重新启动 Web 服务器才能使更改生效。 - Cyclonecode
еҪ“жӮЁжҸҗдәӨж—¶з”ҹжҲҗзҡ„й”ҷиҜҜжҳҜд»Җд№ҲпјҹжӮЁжІЎжңүд»»дҪ•жЈҖжҹҘиҝҷдәӣPOSTе…ғзҙ жҳҜеҗҰеӯҳеңЁзҡ„еҶ…е®№гҖӮ$filename = isset($_POST['filename'])?$_POST['filename']:""; $dbData = isset($_POST['dbData'])?$_POST['dbData']:""; if(!empty($filename) && !empty($dbData)) { ... } - Twisty
没有错误,数组的所有值都丢失了。 - FuzzyStatic
@FuzzyStatic,截断后的下两个字符是什么?通过的数据长度是多少? - Jonathan M
1个回答

6
尝试增加max_input_vars的值。我相信默认值为1000。
我遇到了几次这样的问题,其中一个表单会根据数据库表中的每一行产生一个或多个字段,当它增长到数百行时,后面的表单字段会被截断。
虽然您似乎只使用了一个POST变量$_POST['dbData'],但如果AJAX请求将dbData的每个元素作为单独的&dbData[]=...参数发送,那么它将被多次计算。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接