jQuery: доступ к JSON через динамические переменные и сохранение результатов в массиве

0

Я создаю сайт галереи с несколькими категориями и набором элементов в каждой категории.

План состоит в том, чтобы сгенерировать две переменные, которые удерживают текущую категорию (currentCategory) и текущий элемент (currentItem), передать jQuery для поиска этой категории в файле JSON, получить данные текущего элемента и сохранить все в массиве jQuery (currentContent). Оттуда я просто получал доступ к массиву jQuery, когда это необходимо, вызывать нужную позицию внутри массива и загружать данные в DOM.

Моя проблема... ну, все. Я не могу получить доступ к JSON через динамическую переменную, не говоря уже о хранении извлеченных данных в массиве. Я читал много, много, maaaany учебников и дискуссий, но я даже не могу понять, какой учебник или обсуждение могут иметь отношение к моей проблеме, не говоря уже о применении этих знаний к моей проблеме.

Вот мой JSON файл (пока только с одной категорией):

{
    "websites": [
        {
            "title": "Chains of Honor for 'Joomla'",
            "code": "chains",
            "desc": "Some sample text to explain what going on",
            "items": "2"
        },
        {
            "title": "Agar Teryn - Book of Tales",
            "code": "agar",
            "desc": "Some sample text to explain what going on",
            "items": "2"
        },
        {
            "title": "Minifolio for 'The Secretary'",
            "code": "minifolio",
            "desc": "Some sample text to explain what going on",
            "items": "2"
        },
        {
            "title": "Mirogreen for 'Wordpress'",
            "code": "mirogreen",
            "desc": "Some sample text to explain what going on",
            "items": "2"
        },
        {
            "title": "Lain Ardhon for 'phpBB3'",
            "code": "ardhon",
            "desc": "Some sample text to explain what going on",
            "items": "3"
        }
    ]
}

И немного jQuery у меня есть:

function getContent(currentItem,currentCategory,currentContent) {
    $.getJSON('repository.json', function(data) {  
        global.currentContent = data.websites[currentItem];
        console.log(global.currentContent);
    });
};

Это легко, когда вы вызываете требуемый массив JSON по имени (data.websites), но то, что мне нужно, и то, на что я надеялся, заключается в том, что было бы так же просто, как просто использовать data.variable[position] чтобы получить данные, хранящиеся за выбранный элемент в текущей категории.

И прежде чем я забуду: как я могу назвать позицию внутри массива jQuery? Я думал, вы можете сделать это с помощью array[integer].

Теги:
arrays
dynamic
variables

1 ответ

0

Это то, что вы ищете? FIDDLE

JS

mystuff =
{
    "websites": [
        {
            "title": "Chains of Honor for 'Joomla'",
            "code": "chains",
            "desc": "Some sample text to explain what going on",
            "items": "2"
        },
        {
            "title": "Agar Teryn - Book of Tales",
            "code": "agar",
            "desc": "Some sample text to explain what going on",
            "items": "2"
        },
        {
            "title": "Minifolio for 'The Secretary'",
            "code": "minifolio",
            "desc": "Some sample text to explain what going on",
            "items": "2"
        },
        {
            "title": "Mirogreen for 'Wordpress'",
            "code": "mirogreen",
            "desc": "Some sample text to explain what going on",
            "items": "2"
        },
        {
            "title": "Lain Ardhon for 'phpBB3'",
            "code": "ardhon",
            "desc": "Some sample text to explain what going on",
            "items": "3"
        }
    ]
};
$('#selectme, #wordme').change(function(){
   firstnumber = $('#selectme').val();
   firstname = $('#wordme').val();
   var mytest = 'mystuff.websites[' + firstnumber + '].' + firstname;
   $('.putmehere').html( eval(mytest) );

});

Изменение: 1. Не думайте о jQuery, но просто подумайте о javascript (JavaScript Object Notation).

  1. Самый высокий "уровень" - это имя переменной, поэтому все ваши методы доступа в этом случае должны начинаться с "mystuff".

  2. Следующий нижний уровень - это слово перед ": [" - таким образом, после самого высокого уровня вы помещаете "веб-сайты". - Итак, мистик.

  3. Затем он становится интересным для "веб-сайтов", существует целая серия {}, и каждый из них имеет "число", начинающееся с нуля, поэтому вам нужно выбрать число, соответствующее номеру "{}" -.websites [х]. Конкретный пример "mystuff.websites [0]" относится к первому набору значений в квадратных скобках.

  4. В каждом наборе скобок '{}' есть "имя" и "значение" - "название": "lain Ardhon для" phpBB3 "". Таким образом, вы выбираете "имя", и поэтому определяется ваше значение. Конкретный пример 'mystuff.websites [0].code' = "цепочки"

Я установил прикрепленный скрипт, чтобы вы могли посмотреть на полный массив (массив всегда должен быть до вашего кода, который обращается к массиву), тогда вы можете выбрать "номер" {} и "имя" переменная.

  • 0
    Спасибо за помощь. Что я делаю, так это то, что когда вы выбираете элемент из категории, jquery просматривает соответствующий список, чтобы получить текущую категорию и индексирует (?) Ссылку, по которой щелкнули из этого списка. Например, использование может выбрать пункт «5» из списка «фотография». Переменные "currentCategory" и "currentItem" затем несут информацию "photography" и "5". Сейчас я хочу сказать jquery искать категорию «фотография» в JSON-файле, извлечь данные, которые хранятся для «пятого» элемента, и сохранить все в массиве.
  • 0
    Я обновил свой ответ.
Показать ещё 12 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню