I have a multidimensional array, which consists of 426 smaller arrays, which also comprise of 4 attributes.. Below is an example of one of 426 arrays...
Try setting your php_value post_max_size to at least 16M in your .htaccess and max_input_time so that you do not get a time out.
php_value post_max_size 16M
php_value max_input_time 4000
You should convert all your data in json format at the client side and send it as a text.
var jsonDataString = JSON.stringify(data)
//data - array, associative array, any other variables
$.ajax({
...
data: {
friends: jsonDataString,
}
...
});
At the server side just decode json file.
<?php
...
$friendsJsonString = $_POST['friends'];
$friends = json_decode($friendsJsonString);
...
Changing of php.ini is not a good idea because of security risks.
You need to open your php.ini
file and set (or create) this line:
max_input_vars = 1000000
max_input_vars
has a default value of 1000, which will cut off an array at 1000 total elements. Just change it to a really high number (in my case, I needed to set it to one million).
From the PHP Manual:
How many input variables may be accepted (limit is applied to $_GET, $_POST and $_COOKIE superglobal separately). Use of this directive mitigates the possibility of denial of service attacks which use hash collisions. If there are more input variables than specified by this directive, an E_WARNING is issued, and further input variables are truncated from the request. This limit applies only to each nesting level of a multi-dimensional input array.
Keep in mind: As the manual says, this default limit was put in place to prevent denial of service attacks.
Hope this helps even though this is an old question.
I have the exact same problem.
$.ajax({data:{x:x,y:y}});
Finally it turns out that some of the values are date format (object). When they are converted to simple types (string or integer), the problem is solved. Hope this can help.