【问题标题】:JSON variable not read as textJSON 变量不读取为文本
【发布时间】:2012-10-24 20:04:07
【问题描述】:

我正在尝试从具有执行此操作的 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 进行这项工作?

【问题讨论】:

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


    【解决方案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);   
      });
    });
    

    【讨论】:

    • 哇,这太奇怪了。我在许多网站上都看到了 for 循环方法,有些人声称它是一种优雅的方法。改变这一点立即奏效。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多