powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / AJAX вызов в одном приложении работает, в другом - нет
19 сообщений из 19, страница 1 из 1
AJAX вызов в одном приложении работает, в другом - нет
    #37703622
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два приложения на хостинге. Одно "рабочее", другое - "тестовое". В обоих сделал две одинаковые страницы (отличаются только номерами) и одинаковые Application Process (ничем не отличаются). JavaScript на страницах и PL/SQL на сервере - одинаковые. В одном приложении все работает, в другом - нет.
Вот работающая страница: http://green.maxapex.ws/apex/f?p=229:7
Вот неработающая: http://green.maxapex.ws/apex/f?p=297:9

У меня были подозрения, что дело в джаваскрипте, но я не уверен. В чем может быть проблема?
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37703784
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimber,

Проблема не в js. В неработающем приложении измените процесс GET_PHONE на такой:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE
--variables
BEGIN
htp.p('IT WORKS!');
/*
...
body
...
*/
END;


Сервер должен вернуть строчку 'IT WORKS'. Таким образом, снимая комментарий с части кода, можно определить, на чем именно валится процедура. Возможно, у схемы в новом приложении нет грантов на табличку.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37703807
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
haXbatrockclimber,

Проблема не в js. В неработающем приложении измените процесс GET_PHONE на такой:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE
--variables
BEGIN
htp.p('IT WORKS!');
/*
...
body
...
*/
END;


Сервер должен вернуть строчку 'IT WORKS'. Таким образом, снимая комментарий с части кода, можно определить, на чем именно валится процедура. Возможно, у схемы в новом приложении нет грантов на табличку.Там у всех на все гранты есть (скорее всего). Хостинг с минимальным планом, 1 воркспейс, 1 схема, 1 девелопер... Это теоретически.
А на практике я в приложении для отладки PL/SQL кода использовал процедуру с двумя параметрами типа varchar2, которая при вызове создает строчку в специальной таблице. Так вот - я вызов этой процедуры вставлял первым в application process, и в таблице с логами не появлялось ничего - то есть applcation process просто не вызывается, похоже.
Ваш метод тоже попробовал - с аналогичным результатом... Не работает.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37704012
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понимаю, что предложение покажется глупым, но попробуйте создать заново эту страницу в приложении 297. У меня не получилось добиться такого эффекта.

Попробуйте узнать у хостера, что установлено в качестве "посредника" к БД: EPG+XDB HTTP Server, APEX Listener (сам по себе или на каком-то сервере приложений), OAS + mod_plsql, Apache + mod_owa etc. Может, в логах что-то есть.

rockclimberА на практике я в приложении для отладки PL/SQL кода использовал процедуру с двумя параметрами типа varchar2, которая при вызове создает строчку в специальной таблице.
Вставка происходит в автономной транзакции?

Да, и ещё. Подучите Oracle APEX JavaScript API. Вы всё пишете правильно, но не используете уже имеющиеся функции: $s, $v.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37704197
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimber,

Версия я так понимаю 4.0
Как уже сказали проблемы на стороне сервера.

Проверьте одинаковость названий и свойств процессов, там могут быть, например, непечатуемые символы.
Замените весь код на htp.p('IT WORKS!');
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37704274
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimber,

Протупил, у вас в первом приложении пользователь аутентифицирован, во втором нет.
Требует ли page process аутентификации устанавливается на page zero.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37704630
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevrockclimber,

Протупил, у вас в первом приложении пользователь аутентифицирован, во втором нет.Не понял эту мысль, если честно. Те, кто с форума заходил по ссылке, они же не аутентифицированы? Или что имеется ввиду?

SvDevrockclimber,

Требует ли page process аутентификации устанавливается на page zero.А разве не в свойствах процесса? И потом, page zero отсутствует в обоих приложениях.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37704671
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevТребует ли page process аутентификации устанавливается на page zero.
На On-demand Application Process вообще не действуют ни Authorization, ни Conditions.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37704957
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
haXbatSvDevТребует ли page process аутентификации устанавливается на page zero.
На On-demand Application Process вообще не действуют ... Conditions.

Вы ошибаетесь. :)
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37705037
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimberТе, кто с форума заходил по ссылке, они же не аутентифицированы? Или что имеется ввиду?


В одной кнопке вход, в другой выход, я по этому сужу, хотя это не признак.

Есть такая схема аутентификации No Authentication (Using DAD). Проверьте не установлена ли она в одном из приложений.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37705090
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще, посмотрите не прописана ли неработающая страница в свойствах схемы аутентификации как Session Not Valid.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37705391
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevrockclimberТе, кто с форума заходил по ссылке, они же не аутентифицированы? Или что имеется ввиду?


В одной кнопке вход, в другой выход, я по этому сужу, хотя это не признак.

Есть такая схема аутентификации No Authentication (Using DAD). Проверьте не установлена ли она в одном из приложений.Там, где страница не работает - схема кастомная, где работает - одна из стандартных апексовых. А как это влияент на application process?
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37705654
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эврика, типа

Вооружившись доками по application process и firebug'ом, я обнаружил следущее: когда страница отправляет post-запрос, она отправляет, в частности, два параметра: p_flow_id и p_flow_step_id. Второй из них всегда был равен нулю. SvDev упомянул схемы авторизации. Так как это единственное, чем приложения различались, я начал копать в эту сторону, четких указаний не нашел, но интуиция подсказала, что это "жжжж" - неспроста. Мой JavaScript код был найден на просторах интернета без каких-либо толковых пояснений, что там к чему в нем, так что пришлось заодно найти доку по функции htmldb_get.
Я, собственно, поправил всего один параметр. Было:
Код: javascript
1.
var get = new htmldb_Get(null,html_GetElement('pFlowId').value, 'APPLICATION_PROCESS=GET_PHONE',0);

Стало:
Код: javascript
1.
var get = new htmldb_Get(null,html_GetElement('pFlowId').value, 'APPLICATION_PROCESS=GET_PHONE',html_GetElement('pFlowStepId').value);

Этого оказалось достаточно, можете сами убедиться
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37706788
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
haXbat,

Я даже засомневался, проверил, покрайней мере в 4.1 для OnDemand работают:
1. conditions
2. authorization
3. authentication

rockclimberТам, где страница не работает - схема кастомная, где работает - одна из стандартных апексовых. А как это влияент на application process?

Еще раз,
1. Для того чтобы получить доступ к странице со свойством Page Requiriments Authentication нужно быть аутентифицированным.
2. Некоторые схемы аутентификации делают это автоматически (DAD), и могут быть исключения для страниц. (SESSION_NOT_VALID)
3. Это действенно для всех методов POST/GET, в том числе и для аякса, и при запросе Page Zero с Application Process.
4. Если Page Zero не создана, берутся умолчания, т.е. Page Requiriments Authentication.

5. html_GetElement('pFlowId').value возвращает номер тек. страницы.

И еще одно интересное наблюдениt:

6. page process можно запрашивать с любой страницы, не только с page zero, достаточно установить request в url:
APPLICATION_PROCESS=PROCESS_NAME
http://green.maxapex.ws/apex/f?p=297:9:0:APPLICATION_PROCESS=GET_PHONE

так что почему аякс неработал и заработал легко объяснимо.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37706836
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDev6. page application process можно запрашивать с любой страницы, не только с page zero, достаточно установить request в url
апечатка
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37707872
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevhaXbat,
Я даже засомневался, проверил, покрайней мере в 4.1 для OnDemand работают:
1. conditions
2. authorization
3. authentication

Да точно, в 4.0 тоже самое. Но для меня все равно остается загадкой, что же означает
Код: plsql
1.
Note:Security is not applied to process firing at the point "on-demand".
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37708226
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
haXbat,

В 4.1 не вижу таких notes.
А вот в документации такое поведение документировано.

user guide/About On Demand Application Processesfailures of authentication, authorization, or process conditions do not result in
visible error messages or other indicators of such failures and most often result in
a blank page being displayed. Note that if you are logged in to Application Builder
as a developer, an error messages will display.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37709012
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevВ 4.1 не вижу таких notes.

В 4.0 они на вкладках Conditions, Authorization. Видимо тянутся еще с 3х версий, хотя, как оказалось, только вводят в заблуждение.
...
Рейтинг: 0 / 0
AJAX вызов в одном приложении работает, в другом - нет
    #37709031
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
haXbat,

Да, там по прежнему есть :)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / AJAX вызов в одном приложении работает, в другом - нет
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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