我想将一个2D数组从javascript传递到PHP。但结果我只得到了数组的一部分。
我用arr.length检查尺寸是75。我使用firefox developer工具来检查发布的数据是否正常。但是我在PHP中使用sizeof($arr)来检查43的大小。
我使用apache作为服务器。数组的内容是字符串,但不超过10个字符。
下面是我使用的代码。
javascript:
myCol= 0 + $('#tabResult th').length; //75
myRow= 0 + $('#tabResult tr').length; //62
var data = new Array(myRow);
for(i = 0; i < myRow; i++){
data[i] = new Array(75);
}
$.post('getReport1/getReport1ExportXls',{
table: $('#getReport1List').html(),
data: data,
myCol: myCol,
myRow: myRow
},function(o){
openXls();
});`
PHP:
$data=$_POST['data'];更新1:实际上,最终的数组大小(行x列)接近于1000。我已经尝试更改php.ini max_input_vars = 30000并运行httpd -k restart,但是没有效果。
发布于 2016-05-06 03:26:18
data变量是myRow项的数组:
var data = new Array(myRow);每个项目是一个由75个元素组成的数组:
data[i] = new Array(75);所以您正在生成一个大小为myRow x 75的数组
data = [
item_1: [ ... 75 items ... ]
...
item_myRow: [ ... 75 items ... ]
]在PHP中,您应该得到相同的信息:
count($_POST['data']); // "myRow"
count($_POST['data'][0]); // 75根据你的问题,myRow等于43。
更新
我建议将数组打包为JSON:
data: JSON.stringify(data)然后用PHP对其进行解码:
$data = json_decode($_POST['data'], true);当然,您将只限于post_max_size和memory_limit。
https://stackoverflow.com/questions/37063586
复制相似问题