1

我的多维数组有问题。我正在尝试通过 AJAX 插入一个元素。

我从表中获取数据并将其发送到 PHP 文件,该文件旨在打印结果,但它打印的数据不正确。

我的 HTML 表:

<table id="mytable">
   <tr>
       <td>first</td>
       <td>second</td>
       <td>third</td>
   </tr>
   <tr>
       <td>fourth</td>
       <td>fifth</td>
       <td>sixth</td>
   </tr>
</table>

这是我的Javascript:

for(i=0; i<=length; i++){  
    for(j=0;j<width;j++){

    //inside of html table grab cell 1x1
            data = document.getElementById("mytable").rows[i].cells[j].innerHTML;

            //define the Array 
            export_table[i]= new Array;
            export_table[i][j] = data;
    }
}

我的 processdata.php 中的 PHP:

print_r($_POST)

我看到的问题是 PHP 打印:

Array
        (
            [0] => ,,first
            [1] => ,,,second
        )

但我真的需要它来打印:

Array
        (
            [0] => Array
                              (
                                 [0] => "first"
                                 [1] => "second"
                                 [2] => "third"
                              )
            [1] =>  Array
                              (
                                 [0] => "fourth"
                                 [1] => "fifth"
                                 [2] => "sixth"
                              )
        )
4

2 回答 2

0

从我从您的 Javascript 中可以看出,您似乎正在将 Javascript 数组变量发送到 PHP。
如果这是真的,那么数组值将无法正确发送,因为您无法将数组和对象等高级数据类型传递给 PHP$_POST$_GET查询。
您可能需要将其作为序列化字符串发送,然后explode()将 PHP 中的数据移回 PHP 数组变量中。

或者你可以试试这个:

for(i=0; i<=length; i++){      
       //The first MultiDimensional Array
        export_table[i]= new Array;
        for(j=0;j<width;j++){
        //grab tables cell 1x1
                data = document.getElementById("mytable").rows[i].cells[j].innerHTML;
               //insert 'data' into 2nd dimentional array
                export_table[i][j] = data;
        }
    }

它应该以以下格式返回值:

Array
(
    [tab] => Array
        (
            [0] => first,second,third
            [1] => fourth,fifth,sixth
        )

)

现在 PHP 可以使用 explode 将每个数组项移动到自己的数组中。

于 2013-02-13T13:26:13.263 回答
0

这可能会解决它。

for(i=0; i<=length; i++){  

    export_table[i]= new Array; // this line was misplaced.

    for(j=0;j<width;j++){
        data = document.getElementById("mytable").rows[i].cells[j].innerHTML;
        export_table[i][j] = data;
    }
}

但我对你的工作流程感到困惑。这些数据来自哪里,您需要从客户端以表格格式将其发送回服务器?

于 2013-02-13T13:27:30.400 回答