Php jqueryajax正在切割阵列?
我正在向laravel控制器发送两个数据数组。发送前,每个阵列的长度约为220。然后,为了进行测试,我再次将json响应返回给jquery,长度为数组,第一个数组是ok-220,第二个数组是~114长度 我怎样才能解决它 Jquery ajax:Php jqueryajax正在切割阵列?,php,jquery,ajax,laravel-5.2,Php,Jquery,Ajax,Laravel 5.2,我正在向laravel控制器发送两个数据数组。发送前,每个阵列的长度约为220。然后,为了进行测试,我再次将json响应返回给jquery,长度为数组,第一个数组是ok-220,第二个数组是~114长度 我怎样才能解决它 Jquery ajax: console.log('Array first before '+arr.length); console.log('Array second before '+arr_planned.length); $.ajax({
console.log('Array first before '+arr.length);
console.log('Array second before '+arr_planned.length);
$.ajax({
method:'POST',
url:url,
data: {
_token:token,
arr:arr,
arr_planned:arr_planned
}
}).done(function(msg) {
console.log(msg);
});
控制器
$array_normal = $request['arr'];
$array_planned = $request['arr_planned'];
return response()->json(['Array first after' => sizeof($array_normal),'Array second after' => sizeof($array_planned)],200);
编辑我现在看到数组长度被限制为334(基于其他数组测试)
问题很可能是在php.ini配置中的请求中接受了多少变量。 您应该取消对
的注释;max\u input\u vars=100
到类似于max\u input\u vars=100000的值
希望它能有所帮助。您可能已经达到了最大帖子大小或输入变量的PHP限制。在网站的根目录中创建/编辑php.ini文件并添加
memory_limit = 256M
post_max_size = 150M
max_input_vars = 10000
您可以通过在响应中添加['memory\u limit'=>ini\u get('memory\u limit')、'post\u max\u size'=>ini\u get('post\u max\u size')、'max\u input\u vars'=>ini\u get('max\u input\u vars')]
来检查是否实现了限制
PHP处理如此多数据的方式也可能存在问题。它可能在达到任何定义的限制之前将其截断。您可以将$\u POST
与php://input
,这是原始字符串数据。您可以使用如下函数:
function getRealPOST() {
$pairs = explode("&", file_get_contents("php://input"));
$vars = array();
foreach ($pairs as $pair) {
$nv = explode("=", $pair);
$name = urldecode($nv[0]);
$value = urldecode($nv[1]);
$vars[$name] = $value;
}
return $vars;
}
var_dump($_POST, getRealPOST());
如果它们不同,那么PHP只是在填充$\u POST
时遇到了一些困难,您可以使用getRealPOST
函数作为解决方法。return response()->json(['Array first after'=>count($Array\u normal),'Array second after'=>count($Array\u planned)]代码>检查是否完全相同。谢谢!问题只是最大输入变量。很高兴你把它解决了。