JQuery JSON разбор - PullRequest
       5

JQuery JSON разбор

0 голосов
/ 05 марта 2010

У меня есть карта с 4 слоями, каждый слой имеет маркеры для различных магазинов.Мне нужно вот что.

  • Пользователь выбирает магазин из списка
  • Сценарий захватывает название магазина, а затем находит правильные данные для этого магазина в 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 выглядит так.

    Есть ли кто-нибудь, кто мог бы указать мне правильное направление.

Ответы [ 3 ]

0 голосов
/ 05 марта 2010

Принимая значение, которое вы получите:

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

(кстати, вы забыли здесь точку с запятой) - это либо "primark", либо "boots", Вы должны иметь доступ к данным следующим образом:

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

и т.д.

0 голосов
/ 05 марта 2010

Вы можете сделать что-то вроде этого, чтобы получить магазины:

var shops = data.shops;

Правильный способ получить свойства магазина:

shops[selected].l4x

Другими словами, трактуйте магазины как ассоциативныемассив.

0 голосов
/ 05 марта 2010

Вместо использования этого:

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

Как насчет чего-то подобного:

x: data.shops[selected].l1x, 
y: data.shops[selected].l1y 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...