我正在使用Oracle 11g和Oracle Apex v4.2.2,我想知道在动态操作中通过ajax调用调用Oracle函数的最佳方法是什么。
我基本上有一个函数,它接受六个参数,这些参数要么返回'INVALID‘,要么返回'VALID’。
在我的页面中,我希望能够接受用户输入的值,一旦他们按下按钮进行处理,我需要通过ajax检查结果是“无效”还是“有效”,并立即向用户显示一个对话框,通知他们发生了错误。
在Oracle APEX v4.2.2中,有没有一种新的方法来处理调用函数的这种类型的ajax请求?
发布于 2014-01-31 17:24:55
Ajax +APEX4.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,请确保将数据类型设置为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块动态的true action,因为如果你想处理返回值,它会更难处理。
只需将您的按钮设置为不提交页面,而是由动态操作定义的操作。然后在动态操作中创建一个执行javascript类型的true操作,并在那里使用带回调的ajax调用。
https://stackoverflow.com/questions/21474303
复制相似问题