2012-11-05 28 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