Помощь в выводе данных 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>
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
}
}
})
Для всех, кого интересует мое (текущее) решение.
В моем представлении выводится дата всех узлов по убыванию. Мое дополнительное меню состоит из терминов таксономии, которые могут быть переданы в представление в качестве аргументов. Приведенный ниже код работает для отображения узлов, содержащих указанный термин таксономии.
Над этим нужно поработать, но пока все идет хорошо.
$('#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);
}
Я не думаю, что результат /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.