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

标签 javascript ajax oracle11g oracle-apex

我将 Oracle 11g 与 Oracle Apex v4.2.2 结合使用,我想知道在动态操作中通过 ajax 调用调用 Oracle 函数的最佳方式是什么。

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

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

在 Oracle APEX v4.2.2 中是否有处理此类 ajax 请求以调用函数的新方法?

最佳答案

Ajax + 顶点 4.2 = apex.server.process api
它要求您在页面或应用程序进程的按需进程点有一个进程。在其中你必须调用你的函数并提供参数,这些参数可以是页面项目。要提供返回,请通过调用 htp.p 将值写入 http 缓冲区。

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),请确保将数据类型设置为文本!

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 block 动态 true 操作,只是因为如果你想处理返回值,操作起来更晦涩。
只需将您的按钮设置为不提交页面,而是通过动态操作定义的操作。然后在动态 Action 中创建一个类型为 execute javascript 的真实 Action ,并在那里使用带有回调的 ajax 调用。

关于javascript - 在 Oracle APEX v4.2.2 中通过 Ajax 调用 Oracle 函数以进行现场验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21474303/

相关文章:

javascript - 离开站点 javascript 事件 - onbeforeunload - 刷新页面/内部超链接

javascript - 通过 HTTPS 页面的 HTTP Ajax 请求

javascript - 如何在 ColdFusion CFC 的远程方法中使用/访问 SESSION 变量?

sql - 了解 Oracle Apex_Application.G_Fnn 以及如何使用它

oracle11g - ORA-39122 : Unprivileged users may not perform REMAP_SCHEMA remappings

javascript - 使用 jQuery 同时向下滑动 div 和 .fadeIn() 内容,反之亦然?

javascript - 如何测试传递给函数的元素是否是文档本身?

javascript - 是否可以使用 `array.indexOf` 作为 `searchElement` 传递一个对象?

javascript - 使用 API V3 的主要谷歌地图故障

oracle - 无法从大表中检索结果