在Oracle APEX v4.2.2中通过Ajax调用Oracle函数进行现场验证

 小呗羽_331 发布于 2023-01-30 11:19

我将Oracle 11g与Oracle Apex v4.2.2一起使用,我想知道如何在Dynamic Action中通过ajax调用来调用Oracle函数的最佳方法。

我基本上有一个带有六个参数的函数,这些参数返回“ INVALID”或“ VALID”的结果。

在我的页面中,我希望能够接受用户输入的值,一旦他们按下按钮进行处理,我就需要通过ajax检查结果是“ INVALID”还是“ VALID”,并立即向用户显示一个对话框,通知他们有错误。

在Oracle APEX v4.2.2中,是否有一种新的方法来处理这种类型的ajax请求以调用函数?

1 个回答
  • Ajax + apex 4.2 = apex.server.process 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块动态真实操作,只是因为如果您要处理返回值,采取这种操作比较晦涩。
    只需将按钮设置为不提交页面,而是提交由动态操作定义的操作。然后在动态动作中创建一个类型为execute javascript的真实动作,并在其中使用带有回调的ajax调用。

    2023-01-30 11:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有