Как загрузить и отобразить представление с помощью Ajax в Drupal 7?
Это первый раз, когда я когда-либо пытался загрузить представление с помощью Ajax в Drupal7, и я был бы признателен, если бы вы помогли мне с нуля. Я потратил часы, чтобы научиться этому, но все равно потерпел неудачу!
Я создал представление под названием image_gallery
, оно состоит из трех блоков, называемых hd
,tablet
и phone
, и он отображает набор изображений.Я создал вкладку и хочу отображать и загружать эти блоки (обычно представления) с помощью Ajax. это мой HTML:
<div>
<div id="image_gallery_tab">
<ul>
<li id="igt1">HD</li>
<li id="igt2">Tablet</li>
<li id="igt3">Cellphone</li>
</ul>
</div>
<div id="image_gallery_content">
<div class="igc" id="igc1">
<?php print views_embed_view("image_gallery","hd") ?>
</div>
<div class="igc" id="igc2">
</div>
<div class="igc" id="igc3">
</div>
</div>
</div>
Я установил Use Ajax
на "да" в просмотр пользовательского интерфейса. это мой код jQuery:
$("#image_gallery_tab ul li").click(function(){
var id = $(this).attr("id").slice(-1);
$(".igc").css("display","none");
if(id==2)
{
$.ajax({
url: Drupal.settings.basePath + 'views/ajax',
type: 'POST',
dataType: 'json',
data: 'view_name=image_gallery&view_display_id=tablet', // Pass a key/value pair.
success: function(response) {
$("#igc2").innerHTML=response.display;
},
error: function(data) {
alert('An error occured!');
}
});
}
});
Но он ничего не отображает. что здесь не так и что мне делать? спасибо
1 answers
Для всех, кто оказывается здесь в поисках ответа, вот как вы это делаете. Сначала вам нужно включить "Использовать AJAX" в других настройках в представлении и принять к сведению "Имя машины", так как это ваш идентификатор дисплея:
Тогда вот как вы используете JS с помощью jQuery ajax:
$.ajax({
url: Drupal.settings.basePath + '/views/ajax',
type: 'post',
data: {
view_name: 'your_view_name',
view_display_id: 'page', //your display id
view_args: VIEW_ARGUMENT_HERE, // your views argument(s)
},
dataType: 'json',
success: function (response) {
if (response[1] !== undefined) {
console.log(response[1].data); // do something with the view
}
}
});