2010-03-05 209 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 

換句話說,把商店當作一個關聯數組。