4

私は mysql データベースからデータを取得し、JSON オブジェクトを PHP でエンコードして JS で使用しています。PHP側で、私はこれをしました

while($row = mysql_fetch_array($result))

{
     $jmarkers = array(
        'id'=> $row['id'],
                'lat' => $row['lat'],
                'lng' => $row['lng'],
         etc...            
    );
    array_push($json, $jmarkers);
}

$jsonstring = json_encode($json);
echo $jsonstring;

jQuery を使用して JS のデータにアクセスでき、JSON データを保存するための配列を作成しました。

$.getJSON("getjson.php", 関数(データ)

{
     myMarkers = data;
     console.log(myMarkers);
});

次のようなステートメントを使用して、ループ内の myMarkers 配列のデータにアクセスすることを計画していました。

var tempLat = myMarkers.jmarkers[i].lat;

問題は、JSON オブジェクトが jmarkers などと呼ばれていないことです。コンソールに出力すると、この一般的な名前「オブジェクト」が付けられます。

オブジェクト { id="2", lat="40.6512", lng="-73.9691", もっと...},

そのため、JS 配列でそれらを指す方法がわかりません。PHP JSON エンコード関数を調べましたが、オブジェクト名を設定または変更する場所がわかりません。助言がありますか?ありがとうございました!

4

3 に答える 3

5

それは予想されることです。JSON は本質的に代入操作の右側です。

var x = {'foo':'bar'};
        ^^^^^^^^^^^^^---- JSON

このx部分は単にオブジェクトの名前であるため、含まれていません。テキストを含めたい場合はjmarkers、エンコードするデータ構造の一部である必要があります。

$arr = array(
   'jmarkers' => array(...your data here...);
);

しかし、これはデータ構造に別のレイヤーを追加するだけで、特に理由はありません。

于 2012-07-16T16:10:20.270 に答える
3

$jmarkersJSON オブジェクトの PHP 側の単なる識別子です。渡されると、配列値が JSON でエンコードされた文字列に変換されるため、結果として識別子が失われます。

現時点での PHP コードでは、array_push($json, $jmarkers)現在の配列に配列を追加しています$json。したがって、Javascript コードの jmarkers 識別子では取得できない 2 次元配列をインスタンス化しています。myMarkers[i]代わりに使用してデータを取得するだけです。

于 2012-07-16T16:08:30.400 に答える
1

あなたはそうしない。全体がオブジェです。その中の要素を参照するだけで済みます。

alert(myMarkers.id);
于 2012-07-16T16:09:02.473 に答える