Как получить доступ к вложенным данным с помощью шаблонов jQuery - PullRequest
0 голосов
/ 19 декабря 2011

Я пытаюсь разобраться с плагином шаблонов jQuery.

Мой JSON отформатирован так: -

{
"sEcho":1,
"total":"1710",
"aaData":[
    [
        "Help",
        "http:\/\/www.mysite.com\/wp-content\/uploads\/2011\/09\/dt_intfc4e732d1f1276d_4e76fab1e95bd.mp3?King_of_Spain_Entropy_02_Animals_Part_1.mp3",
        "1784",
        "3",
        0,
        null,
        "0000-00-00 00:00:00"
    ],
    [
        "A Day In The Life",
        "http:\/\/www.mysite.com\/wp-content\/uploads\/2011\/09\/dt_intfc4e732d1f1276d_4e76f5fc253a1.mp3?JenWood_Zeppelin.mp3",
        "3573",
        "3",
        0,
        null,
        "0000-00-00 00:00:00"
    ]
}

Я пытаюсь использовать шаблоны JQuery, чтобы взять этот JSONмассив и применить шаблон узла tr для каждого объекта в этом «aaData» в этом массиве, а также визуализировать отдельные узлы «td» для отдельных частей данных.

Однако все примеры, которые я видел, имеютJSON отформатирован с уникальными именами для каждого фрагмента данных в объекте, т.е. «имя», «значение» и т. Д. Я не могу переформатировать источник JSON, поэтому мне нужно получить доступ к вложенным данным через их индекс.

Мой шаблон и код в настоящее время выглядят так: -

$.ajax({
    "dataType": 'json',
    "url": '/wp-content/hovercard.php',
    "data": 'user=' + $artistid + '&start=' + $start + '&finish=' + $finish + '&order=' + $orderValue + '&orderColumn=' + $columnValue,
    "success": function(data, textStatus, jqXHR) {

        var domain = data.domain;
        var array = data.aaData;
        var $table = $('#favourites-hovercard-table-'  + $artistid );

        var markup = '<tr class="odd">'
                         + '<td class="sorting_1"><div class="audio"><a href="${1}" class="sm2_button"><div class="play_button"></div></a></div></td>'
                         + '<td class="hovercard-song"><div class="hovercard-row"><span class="hovercard-songs ajax"><a href="' + domain + 'song/?songsID=${2}">${0}</a></span></div><div title="${5} people have voted on this song" class="ministars minitip dark-tooltip"><div class="star_1 ratings_stars ratings_vote"></div><div class="star_2 ratings_stars ratings_vote"></div><div class="star_3 ratings_stars ratings_vote"></div><div class="star_4 ratings_stars ratings_vote"></div><div class="star_5 ratings_stars ratings_vote"></div><div class="star_6 ratings_stars ratings_vote"></div><div class="star_7 ratings_stars ratings_vote"></div><div class="star_8 ratings_stars"></div><div class="star_9 ratings_stars"></div><div class="star_10 ratings_stars"></div></div></td>'
                         + '<td><div class="hovercard-row hovercard-rating hidden_column">${4}</div></td><td><div class="hidden_column hovercard-row">3</div></td>'
                         + '<td><div class="hidden_column hovercard-row"></div></td>'
                         + '<td class="hovercard-time"><div title="${6}" class="hovercard-row uploaded_time minitip timeago dark-tooltip">${6}</div></td>'
                    + '</tr>';

        $.template( "favouritesTemplate", markup );
        $.tmpl( "favouritesTemplate", array ).appendTo($table);



        }

});

Как вы можете видеть выше, в моем шаблоне я пытаюсь использовать $ {1}, $ {2}, $ {3} и т. Д.... чтобы получить доступ к индексу данных внутри объекта, поскольку он не назван.

Очевидно, что это неправильный подход, и я должен упустить что-то важное здесь.

Как мне получить доступ к этим данным?в моем шаблоне для добавления дополнительных строк в мою таблицу по требованию.

Кроме того, я хотел бы иметь возможность чередовать класс узла tr между «нечетным» и «четным».Это вообще возможно с шаблонами jQuery?

Большое спасибо.

РЕДАКТИРОВАТЬ:

Мне удалось условно изменить сценарий на стороне сервера, так что для этого экземпляра он будет выводитьданные JSON дополнены именами объектов, такими как: -

     {
    "sEcho":1,
    "total":"1710",
    "aaData":[
        [
            "song_name": "Help",
            "song_file": "http:\/\/www.mysite.com\/wp-content\/uploads\/2011\/09\/dt_intfc4e732d1f1276d_4e76fab1e95bd.mp3?King_of_Spain_Entropy_02_Animals_Part_1.mp3",
            "songsID": "1784",
            "user": "3",
            "rating": 0,
            "ratings_count": null,
            "uploaded_time" "0000-00-00 00:00:00"
        ],
}

И теперь обновили мой шаблон следующим образом: -

var markup = '<tr class="odd">'
                + '<td class="sorting_1"><div class="audio"><a href="${song_file}" class="sm2_button"><div class="play_button"></div></a></div></td>'
                + '<td class="hovercard-song"><div class="hovercard-row"><span class="hovercard-songs ajax"><a href="' + domain + 'song/?songsID=${songsID}">${song_name}</a></span></div><div title="${ratings_count} people have voted on this song" class="ministars minitip dark-tooltip"><div class="star_1 ratings_stars ratings_vote"></div><div class="star_2 ratings_stars ratings_vote"></div><div class="star_3 ratings_stars ratings_vote"></div><div class="star_4 ratings_stars ratings_vote"></div><div class="star_5 ratings_stars ratings_vote"></div><div class="star_6 ratings_stars ratings_vote"></div><div class="star_7 ratings_stars ratings_vote"></div><div class="star_8 ratings_stars"></div><div class="star_9 ratings_stars"></div><div class="star_10 ratings_stars"></div></div></td>'
                + '<td><div class="hovercard-row hovercard-rating hidden_column">${rating}</div></td><td><div class="hidden_column hovercard-row">${user}</div></td>'
                + '<td><div class="hidden_column hovercard-row"></div></td>'
                + '<td class="hovercard-time"><div title="${uploaded_time}" class="hovercard-row uploaded_time minitip timeago dark-tooltip">${uploaded_time}</div></td>'
            + '</tr>';

Но он все еще не отображает данные в tr/ тд узлы, которые он создает.Согласно firebug все данные привязываются к начальному узлу 'tr'.

Я не уверен, где я ошибаюсь?

1 Ответ

1 голос
/ 19 декабря 2011

Я не думаю, что вы можете сделать это.Все переменные должны быть названы.Посмотрите на эту страницу:

http://api.jquery.com/jQuery.template/

Откуда вы получаете JSON?

...