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に送信しているように見えます。これが true の場合、配列やオブジェクトなどの高度なデータ型を PHPやクエリ
に渡すことができないため、配列値は正しく送信されません。シリアル化された文字列として送信してから、PHP 内のデータを送信して、PHP 配列変数に戻す 必要がある場合があります。$_POST$_GET
explode()

または、これを試すこともできます:

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 に答える