AjaxForm - Подаване на формуляри чрез Ajax

MODX Revolution има хубав компонент за форма, наречен FormIt. Той ме устройва с всичко, с изключение на едно нещо - липсата на работа с ajax. Проблемът е стар, решен е по сто различни начина в сто различни сайта и аз просто не исках да преминавам през сто и първия.

Следвайки добре известната мъдрост "по-добре е да загубиш един ден, отколкото да летиш за пет минути", взех и написах нов безплатен AjaxForm компонент.

  • ajaxform
  • подаване
Фрагментът работи просто:
  1. Регистрира необходимите скриптове на интерфейса (jQuery.Form и jQuery.jGrowl)
  2. Записва $scriptProperties в сесията при извикване на фрагмента
  3. Изобразява посочения формуляр, като дава класа ajax_form и скрит вход за получаване на $scriptProperties
  4. Окачва манипулатор на формуляра, така че да бъде изпратен чрез ajax
  5. При изпращане изпълнява посочения фрагмент за обработка и връща отговор от него
  6. Отпечатва съобщение за успех или грешка, ако има такава.
По подразбиране всичко е проектирано да работи сFormIt, но можете също да посочите свой собствен фрагмент.

Пример за обаждане за FormIt:

За да покаже съобщения за грешка при попълване на поле, скриптът търси блок с класаerror_fieldnameвъв формуляра и вмъква съобщение в него (вижте частта по подразбиране). Тези съобщения се изтриват при повторно изпращане на формуляра.

На теория можете да промените всички извиквания на FormIt на производствени сайтове, като просто ги опаковате в AjaxSubmit и прехвърлите формуляра от страницата в част - трябва да работи.

Разбира се, можете да използвате свой собствен фрагмент, който ще направи всичко (дори ще създаде страници в сайта) и трябва да върне JSON масив с ключове:

  • статус- 1 или 0, т.е. успех или грешка
  • съобщение— съобщение за операция с фрагмент
  • данни— масив за полета сгрешки, в които ключовете са името на полето, а стойността е съобщението за грешка
За удобство променливата$AjaxFormс класа на компонента се предава на параметрите на фрагмента. Съветвам ви да извикате методитеerrorиsuccessот него, когато издавате отговор.

Най-простият пример за вашия фрагмент:

Като цяло изтегляме, тестваме, пишем рецензии. Това е бета версия, написана изцяло днес и е вероятно да съдържа грешки.

Фрагментът може да се използва по друг интересен начин - като просто го извикате на страницата, вие получавате включениjQuery.jGrowlи можете лесно да показвате хубави javascript toast известия:

Като втори параметър можете да зададете "лепкав" изскачащ прозорец - той ще трябва да бъде затворен ръчно, може да бъде полезен за показване на сериозни грешки.

ajaxform