sql >> Database >  >> RDS >> Oracle

Een Oracle-functie aanroepen via Ajax voor validatie ter plaatse in Oracle APEX v4.2.2

Ajax + apex 4.2 =apex.server. proces-API
Het vereist dat je een proces hebt op het on-demand procespunt van de pagina of een aanvraagproces. Daarin moet u uw functie aanroepen en de parameters opgeven, wat de pagina-items kunnen zijn. Schrijf waarden naar de http-buffer met aanroepen naar htp.p . om een ​​resultaat te geven .

DECLARE
  some_var1 VARCHAR2(50);
BEGIN
  some_var1 := my_package.my_function(:P1_EMPNO, :P1_DEPTNO);
  -- write values back
  htp.p(some_var1);
END;

U kunt eenvoudig apex.server.process . opgeven met pagina-items. Verdere afhandeling is allemaal in javascript.
Opmerking:het dataType is standaard ingesteld op JSON, en dus als u geen ander standaard datatype opgeeft en geen json-tekenreeks retourneert, krijgt u een parseerfout. Dus als u een tekst retourneert binnen uw on-demand proces, zoals INVALID, zorg er dan voor dat u het datatype instelt op 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');
      };
    }
  } );

Ik zou dit niet opsplitsen in meer dynamische acties dan nodig, ook al zou het mogelijk zijn. Persoonlijk ben ik er niet dol op om te proberen een PLSQL-blok dynamische echte actie te gebruiken, alleen omdat het obscuurder is om naar te handelen als je met retourwaarden wilt omgaan.
Stel gewoon je knop in om de pagina niet in te dienen, maar actie gedefinieerd door dynamische actie. Maak vervolgens in de dynamische actie één echte actie van het type voer javascript uit en gebruik de ajax-aanroep met callback (s) daar.




  1. MySQL-gegevens naar JSON via PHP

  2. ORA-01005 fout bij het verbinden met ODP.Net

  3. Hoe de MySQL-gegevensmap in de docker-container migreren?

  4. SQL Server-scripts uitvoeren