Alterator/catch message
Материал из ALT Linux Wiki
(Новая страница: «Актуально для alterator-4.17-alt3 alterator-fbi-5.26-alt1 01/06/2010 Пример обработки ошибок. Имеется простая фо...») |
|||
(4 промежуточные версии не показаны) | |||
Строка 6: | Строка 6: | ||
'''HTML''' | '''HTML''' | ||
+ | <pre> | ||
+ | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> | ||
+ | <html wf="none"> | ||
+ | <body> | ||
+ | |||
+ | <form method="POST"> | ||
+ | <table width="100%"> | ||
+ | <tr> | ||
+ | <td align="left"> | ||
+ | <span translate="_">New Data</span> | ||
+ | </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td > | ||
+ | <hr /> | ||
+ | </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td > | ||
+ | <span translate="_">New Data:</span> | ||
+ | |||
+ | <input type="text" class="text" name="newdata"/> | ||
+ | |||
+ | <input type="button" name="datadd" value="Create/Add" class="btn"/> | ||
+ | </td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | </form> | ||
+ | </body> | ||
+ | </html> | ||
+ | </pre> | ||
'''AJAX''' | '''AJAX''' | ||
+ | При возникновении ошибки woo-error или type-error необходимо использовать функцию сatch/message как показано ниже. В данном примере мы при нажатии на кнопку "Create/Add" отправляем данные на сервер backend-у. Который осуществляет проверку и при некорректности данных генерит ошибку типа woo-error. Функция catch/message данную ошибку "ловит" и выводит error-box пользователю с сообщением, переданным backend-ом. | ||
+ | <pre> | ||
+ | (define-module (ui mySuper-module ajax) | ||
+ | :use-module (alterator woo) | ||
+ | :use-module (alterator ajax) | ||
+ | :export (init)) | ||
+ | |||
+ | (define (ui-datadd) | ||
+ | (catch/message | ||
+ | (lambda() | ||
+ | (woo-new "/mySuper-module" 'toBackendData (form-value "newdata")) | ||
+ | ) | ||
+ | ) | ||
+ | |||
+ | |||
+ | (define (init) | ||
+ | (form-bind "datadd" "click" ui-datadd) | ||
+ | ) | ||
+ | </pre> | ||
'''BACKEND''' | '''BACKEND''' | ||
- | [[ | + | Если пользователь введет в поле слово Test, то возникнет сообщение об ошибке. |
+ | |||
+ | <pre> | ||
+ | #!/bin/sh | ||
+ | |||
+ | #turn of auto expansion | ||
+ | set -f | ||
+ | |||
+ | alterator_api_version=1 | ||
+ | . alterator-sh-functions | ||
+ | . shell-config | ||
+ | |||
+ | |||
+ | addMyData() | ||
+ | { | ||
+ | if [ "$1" = "Test" ] ;then | ||
+ | write_error "This is a test error" | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | |||
+ | on_message(){ | ||
+ | |||
+ | case "$in_action" in | ||
+ | new) | ||
+ | [ -n "$in_toBackendData" ] && addMyData "$in_toBackendData" | ||
+ | ;; | ||
+ | esac | ||
+ | } | ||
+ | |||
+ | message_loop | ||
+ | </pre> | ||
+ | |||
+ | {{Category navigation|title=Alterator|category=Alterator|sortkey={{SUBPAGENAME}}}} |
Текущая версия на 17:23, 20 июля 2015
Актуально для alterator-4.17-alt3 alterator-fbi-5.26-alt1
01/06/2010
Пример обработки ошибок. Имеется простая форма: поле для ввода данных, кнопка отправить. Часто различные проверки осуществляются на стороне сервера и при возникновении ошибки необходимо оповестить пользователя.
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html wf="none"> <body> <form method="POST"> <table width="100%"> <tr> <td align="left"> <span translate="_">New Data</span> </td> </tr> <tr> <td > <hr /> </td> </tr> <tr> <td > <span translate="_">New Data:</span> <input type="text" class="text" name="newdata"/> <input type="button" name="datadd" value="Create/Add" class="btn"/> </td> </tr> </table> </form> </body> </html>
AJAX При возникновении ошибки woo-error или type-error необходимо использовать функцию сatch/message как показано ниже. В данном примере мы при нажатии на кнопку "Create/Add" отправляем данные на сервер backend-у. Который осуществляет проверку и при некорректности данных генерит ошибку типа woo-error. Функция catch/message данную ошибку "ловит" и выводит error-box пользователю с сообщением, переданным backend-ом.
(define-module (ui mySuper-module ajax) :use-module (alterator woo) :use-module (alterator ajax) :export (init)) (define (ui-datadd) (catch/message (lambda() (woo-new "/mySuper-module" 'toBackendData (form-value "newdata")) ) ) (define (init) (form-bind "datadd" "click" ui-datadd) )
BACKEND
Если пользователь введет в поле слово Test, то возникнет сообщение об ошибке.
#!/bin/sh #turn of auto expansion set -f alterator_api_version=1 . alterator-sh-functions . shell-config addMyData() { if [ "$1" = "Test" ] ;then write_error "This is a test error" fi } on_message(){ case "$in_action" in new) [ -n "$in_toBackendData" ] && addMyData "$in_toBackendData" ;; esac } message_loop