2010-03-05 112 views
0

我有一个4层的地图,每层有各种商店的标记。我需要做的是这个。jquery json解析

  • 用户从选择
  • 脚本争夺店铺名称选择店铺,然后找到正确的数据从JSON那家商店。

我对脚本应该如何看,但不知道如何正确编写它有一个大概的想法。

$('#shopselect').change(function() { 
    $.ajax({ 
    type: "GET", 
    url: "data.txt", 
    dataType: "json", 
    success: function(data) { 

    var selected = $('#shopselect option:selected').text() 

    if ($(".layer1:visible").length) { 
     $("#viewport").mapbox("center", { 
      x: shops." + selected + ".l1x, 
      y: shops." + selected + ".l1y 
     }); 
    } else if ($(".layer2:visible").length) { 
     $("#viewport").mapbox("center", { 
      x: shops." + selected + ".l2x, 
      y: shops." + selected + ".l1y 
     }); 
    } else if ($(".layer3:visible").length) { 
     $("#viewport").mapbox("center", { 
      x: shops." + selected + ".l3x, 
      y: shops." + selected + ".l1y 
     }); 
    } else if ($(".layer4:visible").length) { 
     $("#viewport").mapbox("center", { 
      x: shops." + selected + ".l4x, 
      y: shops." + selected + ".l1y 
     }); 
    } 
} 
}); 

json看起来像这样。

{ 
shops:{ 
    primark:{ 
     l1x:310, 
     l1y:132, 
     l2x:388, 
     l2y:264,    
     l3x:530, 
     l3y:355, 
     l4x:670, 
     l4y:450 
    }, 
    boots:{ 
     l1x:310, 
     l1y:132, 
     l2x:388, 
     l2y:264,    
     l3x:530, 
     l3y:355, 
     l4x:670, 
     l4y:450 
    }  
} 

}

是否有任何人谁可以点我在正确的方向。

x: shops." + selected + ".l1x, 
y: shops." + selected + ".l1y 

类似的东西是什么:

x: data.shops[selected].l1x, 
y: data.shops[selected].l1y 

回答

0

而不是使用这个的这里是分号)是“primark”还是“boots”, 你应该可以访问这个数据wa Y:

var coords = data.shops[selected]; 
if ($(".layer1:visible").length) { 
    $("#viewport").mapbox("center", { 
     x: coords.l1x, 
     y: coords.l1y 
    }); 

+0

的JSON是在功能参数数据,所以你需要使用 X:data.shops [选择] .l1x, Y:data.shops [选择] .l1y – 2010-03-05 11:39:01

+0

@大卫:ergh,我注意语法,并没有检查变量:-(我已经编辑了我的答案;感谢您的评论! – 2010-03-05 11:40:19

+0

谢谢你们,我已经全部工作了。 – Trip 2010-03-07 21:50:07

0

假设你得到的值:

var selected = $('#shopselect option:selected').text() 

(顺便说一下,你忘了

0

你可以做这样的事情来获得商店:

var shops = data.shops; 

拿到店性质的正确方法是:

shops[selected].l4x 

换句话说,把商店当作一个关联数组。