У меня возникли проблемы с корректной работой следующего кода:
(функция ($) {
'использовать строгий';
Drupal.behaviors.mybehavior = {
прикрепить: функция (контекст, настройки) {
// Нажмите на изображение-заполнитель, это должно открыть форму, а затем
// заменяем изображение видеоресурсом (контент закрытого типа)
$(документ).once('abc').on('щелчок', '.image_class', function() {
var fid = 123 // Получить идентификатор объекта формы из атрибута данных
var vid = 456 // Получить идентификатор объекта ресурса из атрибута данных
// Этот вызов AJAX загружает форму и возвращает OpenModalDialogCommand
// содержащий форму.
Друпал.ajax({
URL: '/load/a/form/' + фид
}).execute().done(функция() {
var id = // Получить идентификатор формы Marketo
// Загружаем форму из Marketo
MktoForms2.loadForm('cname', '123-123-123', fid, функция (форма) {
form.onSuccess (функция (е) {
form.getFormElem().hide();
// Если форма успешно отправлена, загружаем видео
// ресурс и разместить его на странице с помощью HTMLCommand
Друпал.ajax({
URL: '/load/a/video/' + видео
}).execute().done(функция() {
// Базовая работа с CSS/очисткой здесь
});
вернуть ложь;
});
});
})
});
}
}
})(jQuery);
Весь процесс работает правильно, но дублирует предыдущие вызовы AJAX на каждом этапе.
Например, когда я нажимаю начальный селектор .image_class
вызов AJAX, который загружает форму, отлично работает.
Как только я успешно заполню форму, срабатывает второй вызов AJAX, но, похоже, это также запускает первый вызов AJAX, эффективно помещая только что заполненную и удаленную форму обратно на страницу, повторно открывая диалоговое окно.
Все запускается правильно, я просто не могу понять, как заставить этот процесс работать без повторного запуска всех предыдущих вызовов AJAX.
Спасибо!