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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (111)

我正在使用Oracle 11g和Oracle Apex v4.2.2,我想知道在动态操作中如何通过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)中返回文本,请确保将数据类型设置为文本!

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

扫码关注云+社区

领取腾讯云代金券