Помощь в выводе данных Drupal View JSON с помощью функции getJSON


Я пытаюсь вернуть данные представления и отобразить их в списке для проверки.

Он отправляет данные и, кажется, получает их (я получаю 200), но он не выводит данные.

Любая помощь очень признательна!

<div id="ajax"></div>

<script type="text/javascript">
$(document).ready(function(){

    $.getJSON('/views/ajax?view_name=latest_new&view_display_id=page_1&view_args=city', function(data) {
        var items = [];

        $.each(data.items, function(i, item) {
            items.push('<li id="' + i + '">' + item + '</li>');
        });

        $('<ul/>', {
            'class': 'my-new-list',
            html: items.join('')
        }).appendTo('#ajax');

    });

});
</script>
 2
Author: Allan Thomas, 2011-06-13

3 answers

$.ajax({
  url:'views/ajax',
  dataType: 'json',
  data:{
    view_name: 'my view name',
    view_display_id: 'default',
    view_args: 'view argument goes here',
  },
  success: function(data, textStatus, jqXHR){
    if(data[1].data !== undefined){
      // the view results will be in data[1].data
    }
  }
})
 2
Author: 2pha, 2012-12-12 03:57:11

Для всех, кого интересует мое (текущее) решение.

В моем представлении выводится дата всех узлов по убыванию. Мое дополнительное меню состоит из терминов таксономии, которые могут быть переданы в представление в качестве аргументов. Приведенный ниже код работает для отображения узлов, содержащих указанный термин таксономии.

Над этим нужно поработать, но пока все идет хорошо.

$('#block-menu-secondary-links a').bind('click', function(){
    var arg = $(this).attr("title");
    $.get('views/ajax?view_name=latest_new&view_display_id=page_1&view_args='+arg, null, response);
    return false;
});

var response = function(data) {
    var result = Drupal.parseJson(data);
    $('#content').html(result.display);
}
 1
Author: Allan Thomas, 2011-06-17 19:23:36

Я не думаю, что результат /views/ajax будет таким, как вы ожидаете. На Drupal 7 он возвращает массив команд Ajax, а не результаты просмотра в виде массива строк. Видишь views_ajax() ( или views_ajax() для Drupal 6).

Если вы хотите получить результаты представлений в виде массива JSON, вероятно, проще использовать модуль Источник данных представлений.

После просмотра скриншота Firebug в аргументе data нет свойств items $.getJSON обратный вызов. Ваш $.each(data.items, function(i, item) {...}); зацикливается на значении undefined и ничего не делает. Ответ на ваш запрос $.getJSON содержит свойство display, которое, по-видимому, является отображаемыми результатами представления. Опять же, я не думаю, что данные, которые вы ищете, и вам нужно что-то, чтобы получить результаты в виде структурированных данных JSON.

 0
Author: Pierre Buyle, 2011-06-14 14:01:46