我遇到了一个问题,即使用AJAX通过POST发送的大数据集无法传递到$_POST
PHP中的变量中。
用户通过网络表单上传Excel / CSV文件,并通过AJAX进行解析。此特定示例具有775个记录,每个记录具有13个字段/元素。添加要提交的其他字段,数据集中的元素少于11,000个。根据我对此主题所做的研究,32位浏览器(例如Firefox,Chrome等)应该能够处理42.9亿个元素,因此我认为数据大小不是问题,尤其是作为响应从文件上传包含所有元素。
仅当提交整个表单以进行验证并将其输入数据库时,问题才浮出水面。问题是Firebug和Chrome开发者工具上的控制台都显示了整个数据集已提交:
在var_dump
上执行$_POST
以下操作:
php.ini已'post_max_size'
设置为200M。偶数'upload_max_filesize'
设置为100M。我亲自测试过的Firefox 32.0.3和Chrome 37.0.2062.103 m以及UAT测试过的其他旧版本(包括IE 10)都出现了此问题。
AJAX调用为:
new wrapper.ajax('/t1.php', {
type: 'POST',
data: data,
form: $('form[name=oppForm]'),
success: function (response)
{
if (response.result)
{
window.location = response.result;
}
},
complete: function ()
{
$("#submit").loading('done');
}
});
PHP是:
<?php
var_dump($_POST);
有什么想法吗?
编辑
与其他开发人员交谈之后,我还检查了输出,php://input
发现它的DID包含浏览器正在发送的整个POST数据,但是该数据未正确转换为$ _POST。但是,如果我从发布数据中删除10个键,然后提交765而不是775,它将正常工作。
这个问题最终被认为'max_input_vars'
将在php.ini
文件没有设置足够高的。该值设置为10,000,并且用户正在提交接近11k的数据,因此其中一些数据已被截断。将此值更改为更大可以解决问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句