2012-11-05 26 views
0

我试着从别人的代码,谁拥有,这是否一个XML处理功能学习:JSON变量未读文本

$(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.string化变量到一个新的变量,但它没有奏效。

Mine成功地为每个标记添加了一个监听器,然而他们调用执行函数,就好像它们是最后一个标记一样。

任何想法如何使这与JSON工作?

回答

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); 
    }); 
}); 
+0

哇,这太奇怪了。我在许多网站上看到了for循环方法,并且有少数人声称它是一种优雅的方式。立即改变这种工作。非常感谢。 – Sraaz