PHP页面只能看到POST数组值中的71项

时间:2015-06-24 19:46:11

标签: php ajax

我有一个非常有趣的问题。正如您在下面的代码中看到的,我将2个POST变量发送到我的PHP页面。其中一个变量是JSON数组。如果unsyncedContacts.length是< 71,它按预期工作。一旦我们在数组中获得了71个项目,PHP页面将只识别前71个项目。我已经在chrome中查看了时间轴,因为这种情况正在发生,而且数据在MB之下。

任何建议或帮助都会非常感激,因为我不知所措。不会抛出任何错误,并且管理在页面之间发送的71条记录将被正确执行。

JS

$.ajax({
  url: 'ajax/upsert_contacts.php',
  type: 'POST',
  dataType: 'json',
  data: {
    "contacts": unsyncedContacts,//JSON array
    "userInfo": localStorage.userInfo
  }
})
.done(function(data) {
 //do stuff here. i don't think its part of my issue
});

PHP - upsert_contacts.php

set_time_limit(0);//set the time limit for each contact to prevent breaking.

//POST DATA
$currentUsersName = json_decode($_POST['userInfo']['usersName']);
$contacts         = $_POST['contacts'];
$aCount           = count($contacts);//returns 71 at MOST

我尝试使用xdebugger逐步执行PHP,而$ aCount最多只返回71。正如我之前所说,如果在$ contacts中说出50个项目,那么它的效果会非常好。一旦达到72,就会变得奇怪

编辑:有人在评论中询问,但删除了它:"您的服务器的max_input_vars设置为什么?"。

max_input_vars 1000

1 个答案:

答案 0 :(得分:0)

原来是max_input_vars

我在开发环境中启用了xdebug,由于某种原因,它没有显示PHP警告,说明我已超过1000(我传递的数组是一个具有14个属性的JSON对象)。

14 * 71 = 994,意味着下一个数组项将超过我设置的1000限制。为了解决这个问题,我使用php_value max_input_vars 20000创建了一个.htaccess文件,以确保我的代码不会再次中断