У мене форма, яка має кнопку AJAX. Коли я натискаю його, він оновлює купу речей, як очікувалося, що добре.
Мені було цікаво, чи є спосіб створити слухача в поведінці, який викликається, коли AJAX-дзвінок завершено?
Дякую
У мене форма, яка має кнопку AJAX. Коли я натискаю його, він оновлює купу речей, як очікувалося, що добре.
Мені було цікаво, чи є спосіб створити слухача в поведінці, який викликається, коли AJAX-дзвінок завершено?
Дякую
Відповіді:
Так, є:
Drupal.behaviors.YourBehaviour = {
attach: function(context, settings) {
$('#yourform').ajaxComplete(function(event, xhr, settings) {
if ($(event.target.id) == 'the-id-of-your-item') {
// Your code here
}
});
}
}
Для версій jQuery 1.8+, схоже, тепер ви повинні приєднати до документа функцію .ajaxComplete, а не форму або сам перегляд (див. Http://api.jquery.com/ajaxcomplete/ )
Наступне працювало для мене на D7 з Jquery 1.10 та Views 7.x-3.8, де "your_view_id" - це ім'я машини перегляду, встановленого на панелі налаштувань "Інше". Існує багато іншої інформації про події, xhr та налаштування для вимкнення, щоб визначити, чи результат ajax потрібний для перегляду, який ви хочете, але це працювало для моєї ситуації:
jQuery(document).ajaxComplete(function(event, xhr, settings) {
if(typeof settings.extraData != 'undefined' && typeof settings.extraData.view_display_id != 'undefined') {
switch(settings.extraData.view_display_id){
case "your_view_id":
console.log('your_view_id ajax results!');
break;
default:
console.log('some other ajax result...');
break;
}
}
});
Жодне із наведених рішень не працювало для мене з Drupal 7.24, jQuery 1.11 та Views 7.x-3.8 .
Те, що запропонував user1193694, було непогано, але отриманий мною об’єкт налаштувань не мав параметра extraData .
Під час розбору об'єкта налаштування я побачив, що settings.data propertiy містить ' view_name = ' та ім’я машини вашого перегляду, тож для чого я фільтрую:
jQuery(document).ajaxComplete(function(event, xhr, settings) {
// see if it is from our view
if (settings.data.indexOf( "view_name=your_views_name") != -1) {
console.log('your_view_id ajax results!');
}
});
Замініть " your_views_name " на ім'я машини вашого перегляду.
Drupal.behaviors.YourBehaviour = { attach: function() { $('#yourform').ajaxComplete...