Ajax + apex 4.2 =apex.server. proces-api
Det kræver, at du har en proces på on-demand-procespunktet på siden eller en ansøgningsproces. I den skal du kalde din funktion og angive parametrene, som kan være sideelementerne. For at give et retur, skriv værdier til http-bufferen med kald til 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;
Du kan nemt levere apex.server.process
med sideelementer. Yderligere håndtering er alt i javascript.
Advarsel:datatypen er som standard sat til JSON, og hvis du ikke angiver en anden standard datatype og ikke returnerer en json-streng, vil du få en parsingsfejl. Så hvis du returnerer en tekst inden for din on-demand-proces, såsom Ugyldig, skal du sørge for at indstille datatypen til tekst!
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');
};
}
} );
Jeg ville ikke dele dette op i mere dynamiske handlinger end nødvendigt, selvom det måske er muligt. Jeg personligt er ikke vild med at forsøge at bruge en PLSQL blok dynamisk sand handling, bare fordi det er mere uklart at handle på, hvis du vil håndtere returværdier.
Bare indstil din knap til ikke at sende siden, men handling defineret af dynamisk handling. Så i den dynamiske handling opret en ægte handling af typen eksekver javascript, og brug ajax-kaldet med tilbagekald(er) der.