AjaxForm - Подаване на формуляри чрез Ajax
MODX Revolution има хубав компонент за форма, наречен FormIt. Той ме устройва с всичко, с изключение на едно нещо - липсата на работа с ajax. Проблемът е стар, решен е по сто различни начина в сто различни сайта и аз просто не исках да преминавам през сто и първия.
Следвайки добре известната мъдрост "по-добре е да загубиш един ден, отколкото да летиш за пет минути", взех и написах нов безплатен AjaxForm компонент.
- Регистрира необходимите скриптове на интерфейса (jQuery.Form и jQuery.jGrowl)
- Записва $scriptProperties в сесията при извикване на фрагмента
- Изобразява посочения формуляр, като дава класа ajax_form и скрит вход за получаване на $scriptProperties
- Окачва манипулатор на формуляра, така че да бъде изпратен чрез ajax
- При изпращане изпълнява посочения фрагмент за обработка и връща отговор от него
- Отпечатва съобщение за успех или грешка, ако има такава.
Пример за обаждане за FormIt:
За да покаже съобщения за грешка при попълване на поле, скриптът търси блок с класаerror_fieldnameвъв формуляра и вмъква съобщение в него (вижте частта по подразбиране). Тези съобщения се изтриват при повторно изпращане на формуляра.
На теория можете да промените всички извиквания на FormIt на производствени сайтове, като просто ги опаковате в AjaxSubmit и прехвърлите формуляра от страницата в част - трябва да работи.
Разбира се, можете да използвате свой собствен фрагмент, който ще направи всичко (дори ще създаде страници в сайта) и трябва да върне JSON масив с ключове:
- статус- 1 или 0, т.е. успех или грешка
- съобщение— съобщение за операция с фрагмент
- данни— масив за полета сгрешки, в които ключовете са името на полето, а стойността е съобщението за грешка
Най-простият пример за вашия фрагмент:
Като цяло изтегляме, тестваме, пишем рецензии. Това е бета версия, написана изцяло днес и е вероятно да съдържа грешки.
Фрагментът може да се използва по друг интересен начин - като просто го извикате на страницата, вие получавате включениjQuery.jGrowlи можете лесно да показвате хубави javascript toast известия:
Като втори параметър можете да зададете "лепкав" изскачащ прозорец - той ще трябва да бъде затворен ръчно, може да бъде полезен за показване на сериозни грешки.