[AjaxForm] 1.2.0 Поддержка отключённых сессий у анонимов
Наконец-то дошли руки допилить AjaxForm. Была проблема при отключённых сессиях для анонимов (настройка anonymous_sessions, указывается только для контекстов!) – сессии отключены, а значит пробросить параметры сниппета, которые необходимы при ajax действиях, невозможно.
Теперь, в новой версии, если сессии включены или вы авторизованы на сайте в админке (что соответственно создаёт сессию), работа происходит как и раньше через сессии. А если сессия отключена, то параметры сниппета пробрасываются через кеш сайта – в кеше создаётся файл с параметрами сниппета.
Также, влил некоторые PR, которые давно висели:
– Украинский язык,
– Параметр сниппета clearFieldsOnSuccess, который говорит, надо ли очищать форму при успешной её отправке,
– В отправляемые данные добавлена передача value кнопки, которую юзер нажал (удобно, если на форме несколько кнопок),
– В default.js заменён document.write на document.body.appendChild,
– Вырезан type="text/javascript" из тега <script> при инициализации на фронте.
Теперь, в новой версии, если сессии включены или вы авторизованы на сайте в админке (что соответственно создаёт сессию), работа происходит как и раньше через сессии. А если сессия отключена, то параметры сниппета пробрасываются через кеш сайта – в кеше создаётся файл с параметрами сниппета.
Также, влил некоторые PR, которые давно висели:
– Украинский язык,
– Параметр сниппета clearFieldsOnSuccess, который говорит, надо ли очищать форму при успешной её отправке,
– В отправляемые данные добавлена передача value кнопки, которую юзер нажал (удобно, если на форме несколько кнопок),
– В default.js заменён document.write на document.body.appendChild,
– Вырезан type="text/javascript" из тега <script> при инициализации на фронте.
Поблагодарить автора
Отправить деньги
Комментарии: 14
Вот спасибо Паша тебе большое!
Жаль, что не прислушались к моей рекомендации шифровать параметры и сохранять их в форме. Данных получится не больше 1Кб. Уверен, даже мобилы потянут. А плюсов много — можно использовать как CSRF токен, не нужна инвалидация кэша (эта проблема решается в текущем обновлении?), привязка не к сессии, а к пользователю.
Это решение временное, чтобы AjaxForm работал с выключенными сессиями у анонимов. Криптовать параметры и пробрасывать всё через фронт (как тут) надо не выборочно для анонимов без сессий, а для всего AjaxForm, чтобы вообще отказаться от сессий. Я сделаю такой апдейт, но потом.
За отмену document.write отдельное спасибо! Гугл спид тест будет доволен. Не скажу, что критично прямо, но постоянно выводит предупреждение.
Это не мне, а @wfoojjaec.
Теперь ajaxform не работает. Ошибка в 61 строке default.js
Ошибки теперь вылезли в консоли:
Правда formit отрабатывает… Как исправить?
Ругается на строку:
scripts.js:2 jQuery.Deferred exception: Cannot read properties of undefined (reading 'defaults') TypeError: Cannot read properties of undefined (reading 'defaults')
Uncaught TypeError: Cannot read properties of undefined (reading 'defaults')
at HTMLDocument.<anonymous>
Правда formit отрабатывает… Как исправить?
Ругается на строку:
$(document).ready(function () {
$.jGrowl.defaults.closerTemplate = '<div>[ ' + afConfig['closeMessage'] + ' ]</div>';
});
Видимо из-за
В default.js заменён document.write на document.body.appendChild,Пока временно замените обратно то, что здесь github.com/bezumkin/AjaxForm/commit/0a40febd8fecf3821c465c0d8483e76d17ac5f2e
Поправил в 1.2.1. Сейчас должно работать корректно.
Здравствуйте. Сегодня делал новый сайт там все равно выдает ошибку. Если у вас не выдает, то могу заново скопировать js из 1.2.1 и написать какую ошибку. По памяти — ругается на какую-то строчку в submitEvent или $submitToggler. Как-то так называется…
Опишите подробный процесс, как воспроизвести ошибку. И дайте сайт, где она воспроизводится.
После обновления стала вылетать ошибка в консоли при отправке формы:
undefined is not an object (evaluating '$submitter.length')
Письмо уходит, а вот JGrowl уже не появляется 1.2.2-pl
==============
- Fixed JS error `undefined is not an object (evaluating '$submitter.length')`
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.