В моем обратном вызове ajax (PL / SQL) есть следующий код:
:P1_CNT := TO_NUMBER(:P1_CNT) + 1;
apex_util.set_session_state
(p_name => 'P1_CNT'
,p_value => :P1_CNT
);
Что, кажется, работает нормально. Но затем вызывается процесс, который проверяет этот элемент страницы, и этот элемент страницы отображается как 0, хотя в обратном вызове он установлен на 1. Как я могу это исправить?
Код, вызывающий ajax, - это javascript ниже, выполняемый из настраиваемого динамического действия:
for ( var i=0; i<records.length; i++) {
apex.server.process
("my_ajax_callback"
,{x01:records[i][1]}
,{type:'GET', dataType: 'text', success: function( text) {}}
);
}
apex.page.submit( 'COMPLETE_PROCESS_RECORDS' );
Где COMPLETE_PROCESS_RECORDS - это процесс, который выполняется после того, как все записи в цикле были обработаны обратным вызовом ajax. обратный вызов ajax оценивает каждую переданную ему запись, обрабатывает одни и отбрасывает другие. P1_CNT увеличивается каждый раз при дальнейшей обработке записи.
apex_util.set_session_state
не требуется. При выполнении PL / SQL APEX сначала идентифицирует переменные связывания и устанавливает их из состояния сеанса перед выполнением кода. Затем, после выполнения, он увидит, изменились ли какие-либо значения, и, если да, автоматически отобразит их обратно в постоянное состояние сеанса. - person Dan McGhan   schedule 10.12.2019