Jquery ajax 正在切割数组?
Posted
技术标签:
【中文标题】Jquery ajax 正在切割数组?【英文标题】:Jquery ajax is cutting the arrays? 【发布时间】:2017-02-12 11:53:53 【问题描述】:我正在向 laravel 控制器发送两个数据数组。发送前数组的长度约为 220 个。然后进行测试,我将 json 中的响应再次返回给 jquery,其中包含数组的长度,第一个可以 - 220,第二个数组的长度约为 114。
我该如何解决?
jQuery 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(基于其他数组测试)。
【问题讨论】:
return response()->json(['Array first after' => count($array_normal),'Array second after' =>count($array_planned)]);
check once
完全一样的响应。
【参考方案1】:
问题很可能是您的 php.ini 配置中的请求中接受了多少变量。
您应该将;max_input_vars = 100
取消注释为max_input_vars = 100000
。
希望对你有所帮助。
【讨论】:
【参考方案2】:您可能已达到最大 POST 大小或输入变量的 php 限制。在您网站的根目录中创建/编辑一个 php.ini 文件并添加
memory_limit = 256M
post_max_size = 150M
max_input_vars = 10000
您可以通过在回复中添加['memory_limit' => ini_get('memory_limit'), 'post_max_size' => ini_get('post_max_size'), 'max_input_vars' => ini_get('max_input_vars')]
来查看限制是否已实施。
这也可能是 PHP 处理这么多数据的方式的问题。它可能会在达到定义的任何限制之前将其截断。您可以将$_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 在填充 $_POST
时只是在某处遇到了困难,您可以使用 getRealPOST
函数作为解决方法。
【讨论】:
谢谢!问题只是 max_input_vars。 很高兴你把它整理好了。以上是关于Jquery ajax 正在切割数组?的主要内容,如果未能解决你的问题,请参考以下文章