0

これを行うxml処理機能を持つ誰かのコードから学ぼうとしています:

$(xml).find("page").find("user").each(function(){
...
    var user = $(this);         
    var userId = $(user).find("Id").text();
...
    MAP.setMarkerClickListener(TRACKER.users[userId].mapMarker[0].marker,function (){
        MAP.openInfoWindow(TRACKER.users[userId].mapMarker[0].infoWindow, TRACKER.users[userId].mapMarker[0].marker);   
    });

うまく機能しますが、JSONを使用してアプリケーションを構築していましたが、次のように似たようなことをしようとしています:

for (var i=0; i<json.users.length; i++) {
    var user = json.users[i];
...
    MAP.setMarkerClickListener(TRACKER.users[user.id].mapMarker.marker,function(){
        MAP.openInfoWindow(TRACKER.users[user.id].mapMarker.infoWindow, TRACKER.users[user.id].mapMarker.marker);   
    });

問題は、元の XML のテキストが関数に渡されたことだと思います。私の場合、変数が渡されているため、関数が使用する値で変数が保持する最後の値です。変数を新しい変数に JSON.stringify しようとしましたが、うまくいきませんでした。

私はすべてのマーカーにリスナーを正常に追加しますが、最後のマーカーであるかのように関数を実行します。

これをJSONで機能させる方法はありますか?

4

1 に答える 1

1

JSON データが有効でない可能性があります
。JSON 応答データを表示できますか。

jsonデータをループする方法はこれでなければなりません

$.each(json.users,function(key,data){
  ...
  MAP.setMarkerClickListener(TRACKER.users[data.id].mapMarker.marker,function(){
   MAP.openInfoWindow(TRACKER.users[data.id].mapMarker.infoWindow, TRACKER.users[data.id].mapMarker.marker);   
  });
});
于 2012-11-05T03:14:00.850 に答える