2011-01-15 13 views
2

私のPHPスクリプトがJavaScriptコードに配列を渡す方法を理解しようとしています。以下のPHPを使用して、私は配列を渡す:画面上に印刷されて何JavaScriptを使用してPHPからJSON配列にアクセスする

$.post("getLatLong.php", { latitude: 500000}, 
     function(data) { 
      arrayData = data 
      document.write(arrayData) 
      document.write(arrayData[0]); 
      document.write(arrayData[0]); 
      document.write(arrayData[0]); 
     }); 
</script> 

は、私がしようとしている

[3,2,7][3, 

で次のように

$c = array(3,2,7); 

echo json_encode($c); 

私JavaScriptがありますjson_encodeの仕組みを理解しています - 配列に変数を渡してから通常のJavaScript配列のようにアクセスできると思っていましたが、配列を1つの大きなテキスト文字列として見ています。どのように配列のようにそれを読み取ることを確認しますか?

+0

例は2次元配列です。それぞれ '3'、' 2'、 '7'にアクセスするには' data [0] [0] '、' '[0] [1]'、 '[0] [2]'などを使ってみてください。 –

+0

ええと、私は今それが2D配列であることを理解しています。しかし、私がそれを変更しても、それはまだ文字列としてそれを読み取ります。 – djq

+0

@Brad Christie:それはまったく2次元配列ではありません。何があなたをそう思わせたのですか? –

答えて

4

$.postdataType引数を渡す:

$.post("getLatLong.php", { latitude: 500000}, 
    function(data){   
    // ... 
}, 'json'); 

その後dataが適切にデコードされます。

また、$.parseJSONをコールバックに使用することもできます。 JSONの

説明:

JSONは、データ交換フォーマットです。これは、送信されるデータ文字列の構造を指定します。 json_encodeは、配列やオブジェクトのようなPHPのデータ構造をとり、JSON、つまり特定の形式の文字列に変換します。

json_encode($c)は、文字列"[3,2,7]"を提供します。

クライアントサイトでは、その文字列を受信しますが、を適切なJavaScriptデータ構造にデコードする必要があります。したがって、$.parseJSON(data)は3つの要素を持つJavaScript配列を提供します(または、.post()の3番目のパラメータとして 'json'を渡すと、jQueryは自動的にデコードを行います)。

+0

ありがとう!それはうまくいった。 – djq

+0

'header( 'Content-Type:application/json')'を置くと '.post'が正しく動作するように見えます(または、少なくとも明示的にJSON応答であることを明示する必要はありません。感覚]) –

+0

@ブラッド私はどこにヘッダを置くだろうか?コード全体が機能しているので、この全体的なプロセスを理解しようとしています。 – djq

関連する問題