Alterator/catch message

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «Актуально для alterator-4.17-alt3 alterator-fbi-5.26-alt1 01/06/2010 Пример обработки ошибок. Имеется простая фо...»)
(f)
Строка 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>
[[Категория:Alterator]]
[[Категория:Alterator]]

Версия 08:52, 1 июня 2010

Актуально для 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
 
Личные инструменты