下記のようなソースでPHPから呼び出したJavaSciptに、2重の連想配列を渡す。
1個の連想配列、または複数の連想配列の最後の連想配列だけなら正常に受け渡せます。
下記のソースに「$HAIRETSU」を「$HAIRETSU[]」と修正して実行すると、JavaScript的には複数要素の連想配列的な要素として受け渡されていますが、実行時に「Object Object」というエラー表示となります。
当初、「Object Object」というエラーからJavaScriptの問題と思いましたが「 Object.keys( ...)」で正しいことは確認できたと思い、JSON関連のPHPとJavaScriptの受け渡し方法と推定しています。
複数要素を持つ連想配列をPHPからJavaScriptへ渡す方法を宜しくお願い致します。
<< ソース >>
</body> </html> << ソース・終了>>Object.keys( HAIRETSU ).forEach( function( keyA ) { for( var keyB in HAIRETSU[ keyA ] ) { window.confirm( '[ ' + keyA + ' ]/[ ' + keyB + ' ]:「 ' + HAIRETSU[ keyA ][ keyB ] + ' 」' ); } }, HAIRETSU ); </script>
<< 実行結果 >>
<!DOCTYPE html> <html> <head> <title>HTML-JavaScript連携(db連携・連想配列)</title> </head> <body> <script> var HAIRETSU = JSON.parse( '{"8":{"SEQ":"12","Attribute":"Navi-tokyo"}}' );・・・・最後の1個しか渡せない。</body> </html> << 実行結果・終了 >>Object.keys( HAIRETSU ).forEach( function( keyA ) { for( var keyB in HAIRETSU[ keyA ] ) { window.confirm( '[ ' + keyA + ' ]/[ ' + keyB + ' ]:「 ' + HAIRETSU[ keyA ][ keyB ] + ' 」' ); } }, HAIRETSU ); </script>
<< 実行結果(訂正後) 分かり易いように適切に改行・空白を入れています。 >>
var HAIRETSU = JSON.parse( '[
{ "11":{"SEQ": "1", "Attribute":"Navi_NHK"} },
{ "3":{"SEQ": "4", "Attribute":"Navi_TOC.php?Attrbt=NTV-BTT"} },
{ "10":{"SEQ": "8", "Attribute":"Navi_tv-fuji"} },
{ "9":{"SEQ":"10", "Attribute":"Navi_tv-asahi-TSS"} },
{ "8":{"SEQ":"12", "Attribute":"Navi-tokyo"} }
]' );
<< 実行結果・終了 >>
回答2件
あなたの回答
tips
プレビュー