JSON变量不作为文本读取

时间:2012-11-05 00:24:03

标签: xml json google-maps-api-3 google-maps-markers

我正在尝试从具有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进行此操作的任何想法吗?

1 个答案:

答案 0 :(得分: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);   
  });
});