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

托尼夫

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

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

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

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

汤姆

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调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章