首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将二维数组从javascript传递到php,但减小了大小。

将二维数组从javascript传递到php,但减小了大小。
EN

Stack Overflow用户
提问于 2016-05-06 03:09:58
回答 1查看 1.2K关注 0票数 2

我想将一个2D数组从javascript传递到PHP。但结果我只得到了数组的一部分。

我用arr.length检查尺寸是75。我使用firefox developer工具来检查发布的数据是否正常。但是我在PHP中使用sizeof($arr)来检查43的大小。

我使用apache作为服务器。数组的内容是字符串,但不超过10个字符。

下面是我使用的代码。

javascript:

代码语言: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:

代码语言:javascript
复制
$data=$_POST['data'];

更新1:实际上,最终的数组大小(行x列)接近于1000。我已经尝试更改php.ini max_input_vars = 30000并运行httpd -k restart,但是没有效果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-06 03:26:18

data变量是myRow项的数组:

代码语言:javascript
复制
var data = new Array(myRow);

每个项目是一个由75个元素组成的数组:

代码语言:javascript
复制
data[i] = new Array(75);

所以您正在生成一个大小为myRow x 75的数组

代码语言:javascript
复制
data = [
  item_1: [ ... 75 items ... ]
  ...
  item_myRow: [ ... 75 items ... ]
]

在PHP中,您应该得到相同的信息:

代码语言:javascript
复制
count($_POST['data']); // "myRow"
count($_POST['data'][0]); // 75

根据你的问题,myRow等于43。

更新

我建议将数组打包为JSON:

代码语言:javascript
复制
data: JSON.stringify(data)

然后用PHP对其进行解码:

代码语言:javascript
复制
$data = json_decode($_POST['data'], true);

当然,您将只限于post_max_sizememory_limit

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37063586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档