Size: a a a

2021 November 03

AK

Andrey K in Evolution CMS
Я чет в последнее время решил возвернуться к обычному js и с удивлением увидел, что jquery по сути уже и не нужен.
источник

АL

Алексей Lector... in Evolution CMS
а как ты сделал отправку формы через ajax на чистом js ? я пробовал чето не очень получилось
источник

AK

Andrey K in Evolution CMS
ajax = function(params, callback) {
       const request = new XMLHttpRequest();
       const url = "ajax.php";
       request.responseType = "json";
       request.open("POST", url, true);
       request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
       request.send(params);
       request.addEventListener("readystatechange", () => {
           if (request.readyState === 4 && request.status === 200) {
               callback.apply(this, [request.response]);
           }
       });
   }
источник

SV

Serguei VeseloV in Evolution CMS
А я с форлистером и аяксом чуть проще поступил. Сделал отдельную страницу с формлистером. Обычным. оттестировал. А на других страницах, где нужна форма, просто аяксом затягиваю данные с этой страницы, отправляю на нее и снова затягиваю. И всё. Примерно так:
function formLoad()
{
   $(".aj_form").each(function(){
       var form = $(this);
       var url = form.attr('action');
       var dt = form.data();
       var params = '';
       for (var key in dt)
       {
           params += params.length ? "&" : "?";
           params += key + "=" + dt[key];
       }
       url += params;
       console.log('url = ' + url);
       $.ajax({
              type: "GET",
              url: url,
              success: function(data)
              {
                  var formdata = $(data).find('.aj_form_content').eq(0).html();
                  form.html(formdata);
              }
       });
   });
}

function formProcess()
{
   $(".aj_form").on('submit',function(e) {
       e.preventDefault();
       var form = $(this);
       var url = form.attr('action');
       $.ajax({
              type: "POST",
              url: url,
              data: form.serialize(),
              success: function(data)
              {
                  var formdata = $(data).find('.aj_form_content').eq(0).html();
                  form.html(formdata);
              }
            });
   });
}

Соответственно, на странице, где надо такую форму, просто пустую форму вставляю с нужным action, и все, в document.ready соответственно вызываю
   formLoad();
   formProcess();
И всё работает безупречно.
источник

E

EVO bot Лёшка in Evolution CMS
Читай документацию ©(Pathologic)
https://docs.evo.im/04_extras/formlister.html
источник

АЧ

Алексей Чжан... in Evolution CMS
🤝🤝🤝
источник

AK

Andrey K in Evolution CMS
По уму в params можно и урл и прочее передавать, но там я не парился. Охулиард вариаций, собственно.
источник

АХ

Андрей [aharito] Хар... in Evolution CMS
@irokez_bm
Тут вот вам подсказывают более универсальный вариант, не понадобится несколько кусков кода, если хотите - разберитесь.
источник

АХ

Андрей [aharito] Хар... in Evolution CMS
Ну да, давно уж движение идет, например FancyBox классный появился без Жиквери.
источник

AK

Andrey K in Evolution CMS
Я в последнее время начал всё "заворачивать" в функцию, совать в неё всякие методы и прочее. Типа как приложение, в таком псеводо-ооп стиле, что ли.
Чтобы потом app.start() и всё.
Типа http://test.1px.su/math/custom.js
источник

AK

Andrey K in Evolution CMS
Дитёнышу на каникулы задали математику в пределах 20 тренировать. А мне лень. Ну и...)
источник

АХ

Андрей [aharito] Хар... in Evolution CMS
Ну и, понятное дело, будут нужны чанки всяких писем там и т.д., они указаны выше

Но это уже сами.
источник

АЧ

Алексей Чжан... in Evolution CMS
принял к сведению! буду разбираться! благодарю!
источник

АЧ

Алексей Чжан... in Evolution CMS
хорошо
источник

SV

Serguei VeseloV in Evolution CMS
Да по-любому надо сначала эту форму без аякса отладить, чтобы там все валидации проходили, сообщения на почту прилетали, предупреждения показывались и т.д. А аяксом потом эту форму подхватить и в нужное место сайта впихнуть, уже проще.
источник

SV

Serguei VeseloV in Evolution CMS
В моем примере - на саму страницу, где форму показывать надо, она встраивается так:
<form class="aj_form simple" action="[~1173~]" data-f_product_id="[*id*]" id="feedback_form" >
         </form>
(В данном примере в get-параметры будет передан еще параметр f_product_id, который я разбираю в prepare-сниппете, можно и кучу других параметров инициализирующих накидать).
Ну и сама форма выводится в одельном шаблоне, на странице, на которую ссылается action, примерно так:
<form class="simple aj_form_content" method="post">
....
</form>
источник

AK

Andrey K in Evolution CMS
Я теперь на страницу форму вообще вывожу только как чанк из &tplForm. Чтобы всякий говноспам не падал, т.к. обработка по сути только аякс. Но иногда валится.
источник

АL

Алексей Lector... in Evolution CMS
а подскажите как в формлистере сделать динамические поля? чето подзабыл) Есть форма, и есть поле, при нажатии "+"  добавляется еще такое же поле и так их может быть много! если не ошибаюсь нужно вроде name="field[]" делать, но не совсем уверен
источник

AS

Aliaksandr Sadouski in Evolution CMS
Хреначу formLister с api=1 и вообще нет чанка formTpl 😁
источник

АХ

Андрей [aharito] Хар... in Evolution CMS
кстати, тема
источник