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 处理这么多数据的方式的问题。它可能会在达到定义的任何限制之前将其截断。您可以将$_POSTphp://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 正在切割数组?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery, $.ajax 和 url 数组

jQuery Ajax 成功返回数组长度?

带有ajax数组的JQuery $.when [重复]

jquery ajax、数组和json

在jQuery中通过ajax发送多维复选框数组

在jQuery中将字符串推送到AJAX成功函数中的数组不起作用