2010-12-04 8 views
0

私はオブジェクトの値を取得する関数getValueを持つオブジェクトのPHP配列を持っています。 私が取得したいのであれば、それはPHPちょうど私の値があります:私は取得JSONを使用してJSでPHPメソッドを使用しますか?

document.write(mapArray); 

を行う場合

var mapArray = <?php echo json_encode($mapArray); ?> 

:私は使用してJSへの配列が渡さ

echo mapArray[2][2]->getValue; 

オブジェクトオブジェクトの文字列の全体配列。私がしようとした場合:

document.write(mapArray.[2][2].getValue); 

i "が未定義" を取得します。

これはどうしてですか?メソッドがJSで認識されるようにPHPデータオブジェクトを模倣する必要がありますかJSONエンコーディングは私にこれを手渡すことができますか?

+0

2番目のコードブロックのレンダリング結果はどうなりますか?その中にPHPビットを持つもの? –

+0

あなたの最初のコードブロックで 'mapArray [2] [2] - > getValue()'を使用すると仮定します。 'getValue'がメソッドではなく単純なプロパティである場合、残りの質問は意味をなさない。 – VoteyDisciple

答えて

4

すべてjson_encodeは、あなたのデータを表す文字列を返します。

すべてのPHP関数のJavaScriptバージョンを作成できることを想像してみてください。 json_encodeは、すべてのPHP機能を理解し、それと同等のJavaScript機能に変換できるコンパイラでなければなりません。

シンプルな機能のためにこのようなことが起こっていることは想像することができますが、もっと複雑なコードではどうすればうまくいくのでしょうか? getValue関数がライブラリ接続のPHPコードの一部を呼び出して、MySQL接続を作成し、データを取得し、JavaScriptには存在しない組み込みのPHP関数を使用して計算を実行する場合、json_encode関数は本質的にPHP言語全体を変換する必要がありますJavaScriptに変換する

いいえ、すべてJSONで取得できるデータです。機能性ではありません。

アクセサーメソッドのプライベートデータがある場合は、json_encodeを呼び出す前にブラウザに返す実際のデータを記述する配列(またはオブジェクト)を作成してください。

+0

ありがとうございます。 –

0

配列をJSONにシリアル化し、JavaScriptで評価するためにクライアントに渡すと、配列の表現とその内容(プロパティ値)のみを渡すことができます。

関連する問題