Ajax + apex 4.2 =apex.server. процес api
Изисква се да имате процес в точката на процеса при поискване на страницата или процес на приложение. В него трябва да извикате функцията си и да предоставите параметрите, които могат да бъдат елементите на страницата. За да осигурите връщане, запишете стойности в http буфера с извиквания към htp.p
.
DECLARE
some_var1 VARCHAR2(50);
BEGIN
some_var1 := my_package.my_function(:P1_EMPNO, :P1_DEPTNO);
-- write values back
htp.p(some_var1);
END;
Можете лесно да предоставите apex.server.process
с елементи на страницата. По-нататъшната обработка е изцяло в javascript.
Бележка за предупреждение:dataType по подразбиране е зададен на JSON и по този начин, ако не предоставите друг тип данни по подразбиране и не върнете json низ, ще получите грешка при анализиране. Така че, ако върнете текст в рамките на вашия процес при поискване, като INVALID, не забравяйте да зададете типа данни на text!
apex.server.process ( "MY_PROCESS", {
pageItems: "#P1_DEPTNO,#P1_EMPNO"
}, {
dataType: "text"
, success: function( pData ) {
//pData should contain VALID or INVALID - alert it
alert(pData);
if ( pData === 'INVALID' ) {
// do something here when the result is invalid
// maybe you want to color something red for example
alert('The data you have entered is invalid');
};
}
} );
Не бих разделил това на по-динамични действия от необходимото, въпреки че може да е възможно. Аз лично не обичам да се опитвам да използвам PLSQL блок динамично истинско действие, само защото е по-неясно за действие, ако искате да се справите с върнати стойности.
Просто задайте бутона си да не изпраща страницата, а действие определени от динамично действие. След това в динамичното действие създайте едно истинско действие от типа изпълни javascript и използвайте извикването на ajax с обратно извикване(я) там.