Как объединить данные JS скрипты?

115
25 января 2020, 05:20

у меня есть два скрипта для форма. Первый ajax скрипт отправляет ajax форму с данными на е-майл. Второй скрипт отправляет данные из формы на сервис E-sputnik. Я могу их подключить по одному. Возможно сделать что бы форма и отправляла на е-майл и на е-спутник? Вот скрипты

Скрипт отправки данные в e-sputnik

$(document).on("submit", ".popup-form", function (e) {
    e.preventDefault();
    $(this).find('button[type=submit]').attr('disabled',true);
    var form_data = $(this).serialize();
    var btn_submit = $(this).find('[type=submit]');
    var data = {
        'action': 'userSubscribe',
        'form_data': form_data,
    };
    $.ajax({
        url: ajaxurl,
        dataType: 'json',
        type: 'POST',
        data: data,
        beforeSend: function () {
            $(this).find('button[type=submit]').attr('disabled',true);
        },
        success: function (data) {
            $(this).find('button[type=submit]').removeAttr('disabled');
            $.magnificPopup.close();
                        window.open(thxDomain,"_self")
        },
        error: function (data) {
            $(this).find('button[type=submit]').removeAttr('disabled');
            console.log('Dispatch error. Have fun :)');
        }
    });
    return false;
});

Скрипт отправки данные на е-майл

$(".popup-form").submit(function() { //Change
        var th = $(this);
        $.ajax({
            type: "POST",
            url: pathPhp, //Change
            data: th.serialize()
        }).done(function() {
      $.magnificPopup.close();
      window.open(thxDomain,"_self")
            setTimeout(function() {
                // Done Functions
                th.trigger("reset");
            }, 1000);
        });
        return false;
    });
Answer 1

Да, вы можете объединить их в один:

$(document).on("submit", ".popup-form", function (e) {
    e.preventDefault();
    $(this).find('button[type=submit]').attr('disabled',true);
    var form_data = $(this).serialize();
    var btn_submit = $(this).find('[type=submit]');
    var data = {
        'action': 'userSubscribe',
        'form_data': form_data,
    };
    $.ajax({
        url: ajaxurl,
        dataType: 'json',
        type: 'POST',
        data: data,
        beforeSend: function () {
            $(this).find('button[type=submit]').attr('disabled',true);
        },
        success: function (data) {
            $(this).find('button[type=submit]').removeAttr('disabled');
            $.magnificPopup.close();
                        window.open(thxDomain,"_self")
        },
        error: function (data) {
            $(this).find('button[type=submit]').removeAttr('disabled');
            console.log('Dispatch error. Have fun :)');
        }
    });
    var th = $(this);
    $.ajax({
      type: "POST",
      url: pathPhp, //Change
      data: th.serialize()
    }).done(function() {
    $.magnificPopup.close();
    window.open(thxDomain,"_self")
      setTimeout(function() {
        // Done Functions
        th.trigger("reset");
      }, 1000);
    });
    return false;
});

На мой взгляд лучшим решением будет создать две функции и уже их вызывать в обработчике.

READ ALSO
Изменение jsf страницы из другой страницы

Изменение jsf страницы из другой страницы

Хочу по нажатию на ссылку на одной странице, изменить элемент другой страницы(изменить тэг) и что-бы это было real time, подскажите как можно это...

140
Добавление блока при нажатии на кнопку

Добавление блока при нажатии на кнопку

Как сделать, чтобы при нажатии на кнопку появлялся еще один такой блок

141