Рейтинг:0

Нужна помощь с вызовами AJAX в Drupal.behaviors

флаг in

У меня возникли проблемы с корректной работой следующего кода:

(функция ($) {
'использовать строгий';
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.

Спасибо!

leymannx avatar
флаг ne
Отсутствуют параметры в начале `(function ($, Drupal, Once) {` и в конце `})(jQuery, Drupal, Once)`. Также убедитесь, что вы добавили их в качестве зависимостей в определение вашей библиотеки. Сделайте его более похожим на примеры в документации: https://www.drupal.org/docs/drupal-apis/javascript-api/javascript-api-overview.

Ответить или комментировать

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