例えばPHPでこんな配列を作った時、
/*PHPコード1*/ $yy[0]['msg1']="0_1"; $yy[0]['msg2']="0_2"; $yy[1]['msg1']="1_1"; $yy[1]['msg2']="1_2"; $yy[2]['msg1']="2_1"; $yy[2]['msg2']="2_2";
下記のようにして、0,1,2それぞれのmsg1とmsg2を取得できます。
/*PHPコード2*/ $rt=''; foreach($yy as $y){ $rt.= $y['msg1']."|".$y['msg2']."\n"; }
ここで、
/*PHPコード3*/ $yy=$_POST['postdata']; //ここがPHPコード1と置き換わる $rt=''; foreach($yy as $y){ $rt.= $y['msg1']."|".$y['msg2']."\n"; }
のようにしても同じ結果になるように、
javascriptから同様の配列をpostしたいのですがうまく行きません。
javascript側では例えば、
/*jsコード1*/ var yy = {}; yy[0]={ msg1: '0_1' , msg2: '0_2' }; yy[1]={ msg1: '1_1' , msg2: '1_1' }; yy[2]={ msg1: '2_1' , msg2: '2_1' };
このようにしてPOSTしてみましたがだめでした。
ここで参考までに上記のPHPだけの場合とjavascriptから送った場合の2つの
$yyをprint_rしたところ
PHPだけの場合、
/*PHPコード1,2の結果*/ Array ( [0] => Array ( [msg1] => 0_1 [msg2] => 0_2 ) [1] => Array ( [msg1] => 1_1 [msg2] => 1_2 ) [2] => Array ( [msg1] => 2_1 [msg2] => 2_2 ) ) 1
javascriptから送った場合、
/*jsコード1とPHPコード3の結果結果*/ Array ( [0] => Array ( [0] => Array ( [msg1] => 0_1 ) ) [1] => Array ( [0] => Array ( [msg2] => 0_2 ) ) [2] => Array ( [1] => Array ( [msg1] => 1_1 ) ) [3] => Array ( [1] => Array ( [msg2] => 1_1 ) ) [4] => Array ( [2] => Array ( [msg1] => 2_1 ) ) [5] => Array ( [2] => Array ( [msg2] => 2_1 ) ) ) 1
という具合に確かに違っていました。
他にもいくつか書き方を変えて見て試したのですが(ソースは残っていません)
どうにかしてjavascript側でPHPコード1に置き換わる配列を作成できないでしょうか?
--追記--
JavascriptからはJQueryで下記のように送っています。
$.post("test.php", {"x[]":x}, function(data,status){ alert(data) } );