powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / [JS] Выполнение кода после выполнения процесса
6 сообщений из 6, страница 1 из 1
[JS] Выполнение кода после выполнения процесса
    #38066461
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я практикую следующий вариант:
в процессе в разделах
Код: plaintext
Process Success Message
и\или
Код: plaintext
Process Error Message
ставлю код -
Код: javascript
1.
<script>....</script>


то есть он выполняется при положительном\отрицательном исходе процесса.

Но это налагает некоторые ограничения и такой вариант похож на "костыль", тк код нужно писать в одну строчку, без форматирования в виде переносов, ввиду того что этот код будет учавствовать в строке url, что тоже по себе не очень хорошо.
И далее необходимо скрывать этемент нотификации на странице, тк он покажется и будет пустой(в случаи если используется только js код).

Какие возможны еще варианты?
...
Рейтинг: 0 / 0
[JS] Выполнение кода после выполнения процесса
    #38075707
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариантов нет больше?...
...
Рейтинг: 0 / 0
[JS] Выполнение кода после выполнения процесса
    #38075990
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasik,

Поделюсь своим быдлокодом. Для ajax запросов я использую связку из htp.p и EXCEPTION: htp.p - возвращает признак успешного завершения, иначе пользователю показывается сообщение об ошибке. Функция в EXCEPTION, которая при возникновении ошибки логирует ее в табличку + шлет письмо ответственному лицу, существенно упрощает тестирование + поддержку.
function get_error
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
PROCEDURE GET_ERROR (f_app_user   IN VARCHAR2,
                     f_mes        IN VARCHAR2,
                     f_code       IN VARCHAR2,
                     f_proc       IN VARCHAR2,
                     f_other      IN VARCHAR2 DEFAULT NULL )
IS
   /*вывод ошибок в браузер
   разработчик (есть роль DEV) видит полное сообщение, пользователь краткое
   
   v ('ADMIN_EMAIL'), v ('FROM_EMAIL') -     Substitution String в приложении
   
   F101 - неизменный альяс приложения
   */
   CURSOR c1
   IS
      SELECT   1
        FROM   dba_role_privs
       WHERE   GRANTEE = f_app_user AND GRANTED_ROLE = 'DEV';

   r1   c1%ROWTYPE;
BEGIN
   INSERT INTO TR000001 (username,
                         app_id,
                         app_page_id,
                         d_sob,
                         error,
                         process,
                         ip)
     VALUES   (f_app_user,
               nv ('APP_ID'),
               nv ('APP_PAGE_ID'),
               SYSDATE,
               f_mes,
               f_proc,
               OWA_UTIL.get_cgi_env ('REMOTE_ADDR'));

   FOR cw IN (SELECT   workspace_id
                FROM   apex_applications
               WHERE   alias = 'F101')
   LOOP
      apex_util.set_security_group_id (cw.workspace_id);
   END LOOP;

   APEX_MAIL.send (
      p_to          => v ('ADMIN_EMAIL'),
      p_from        => v ('FROM_EMAIL'),
      p_body        =>   'User='
                      || f_app_user
                      || ' app_id='
                      || nv ('APP_ID')
                      || ' page='
                      || nv ('APP_PAGE_ID')
                      || ' date='
                      || TO_CHAR (SYSDATE, 'dd.mm.yyyy hh24:mi')
                      || ' SQLERRM='
                      || f_mes
                      || ' '
                      || f_other
                      || ' proc='
                      || f_proc
                      || ' ip='
                      || OWA_UTIL.get_cgi_env ('REMOTE_ADDR'),
      p_body_html   =>   '<p>User=<b>'
                      || f_app_user
                      || '</b><br/> app_id=<b>'
                      || nv ('APP_ID')
                      || '</b><br/> page=<b>'
                      || nv ('APP_PAGE_ID')
                      || '</b><br/> date=<b>'
                      || TO_CHAR (SYSDATE, 'dd.mm.yyyy :hh24:mi')
                      || '</b><br/> SQLERRM=<b>'
                      || f_mes
                      || ' '
                      || f_other
                      || '</b><br/> proc=<b>'
                      || f_proc
                      || '</b><br/> ip=<b>'
                      || OWA_UTIL.get_cgi_env ('REMOTE_ADDR')
                      || '</b></p>',
      p_subj        => 'Сообщение об ошибке'
   );
   APEX_MAIL.push_queue;

   OPEN c1;

   FETCH c1 INTO   r1;

   IF c1%FOUND
   THEN
      HTP.p (f_mes);
   ELSE
      HTP.p ('Произошла ошибка. Повторите операцию.');
   END IF;

   CLOSE c1;
END;


APPLICATION_PROCESS=AP_TEST
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
BEGIN
-- тонны PL/SQL
htp.p('WIN');

COMMIT;

EXCEPTION
   WHEN OTHERS
   THEN
      get_error (:APP_USER, SQLERRM, SQLCODE,'AP_TEST',dbms_utility.FORMAT_ERROR_BACKTRACE);
      rollback;
END;



js
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
ajaxRequest = new htmldb_Get(null, $v('pFlowId'), 'APPLICATION_PROCESS=AP_TEST', 0);
ajaxRequest.add('P4_NVARIANT', $v('P4_NVARIANT'));
ajaxResponse = ajaxRequest.get();

//WIN - не возвратился, значит алерт с ошибкой
if (ajaxResponse.indexOf('WIN')==-1){
alert(ajaxResponse);
}


...
Рейтинг: 0 / 0
[JS] Выполнение кода после выполнения процесса
    #38076096
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
небольшая ремарка:
метода indexOf в IE нет, поэтому он будет материться на него.

Спасибо за то что поделились, поанализирую на досуге)
...
Рейтинг: 0 / 0
[JS] Выполнение кода после выполнения процесса
    #38076162
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasik,

От indexOf можно избавиться, если решить проблему с "htp.p". Дело в том, что "htp.p('WIN')" возвращает строчку со спецсимволом переноса, поэтому сравение "ajaxResponse=='WIN'" всегда будет возвращать "fasle". Нужно что-то вроде "htf.escape_sc".
...
Рейтинг: 0 / 0
[JS] Выполнение кода после выполнения процесса
    #38076167
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я это дело обошел удалением последнего символа:
Код: javascript
1.
2.
3.
4.
5.
...
var ret = get.get();
get = null;
ret = ret.substr(0, ret.length - 1); 
...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / [JS] Выполнение кода после выполнения процесса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]