oracle 如何发送apex.server.process pageItems参数中的列项目?

nfeuvbwi  于 2022-12-22  发布在  Oracle
关注(0)|答案(3)|浏览(190)

在JS API的Oracle APEX 19.1文档中,提到我们可以在apex.server.process中传递列项目。我们如何使用它?
我正在尝试使用apex.server.process将列项目值发送到ajax回调函数
我尝试了以下代码

apex.server.process("ajax_1", { pageItems: ["ENAME"] }, {
    target: $("#EMP"), dataType: "text", success: function (pData) {
        alert(pData);
    }
});

还有

apex.server.process("ajax_1", { pageItems: ["ENAME"] }, {
    target: "#EMP", dataType: "text", success: function (pData) {
        alert(pData);
    }
});

网格具有静态ID:* * EMP**,并且具有名称为的列:* * ENAME和静态ID:* * 姓名
在Ajax回调过程(PLSQL)中

BEGIN
    htp.prn('ENAME : ' ||:ENAME);
END;

我收到以下错误

    • ERR-1002在应用程序"XXXXX"中找不到项目"ENAME"的项目ID**

请帮帮我。

laik7k3q

laik7k3q1#

在 AJAX 回调过程中,需要使用语法apex_application.g_x01 to apex_application.g_x10访问变量。
请访问https://docs.oracle.com/cd/E59726_01/doc.50/e39149/apex_app.htm#AEAPI214了解详细信息和一个小示例。

wh6knrhe

wh6knrhe2#

我迟到了,但由于我有同样的问题,我想提交答案。
如果您的Javascript如下所示:

apex.server.process("test_ajax_variable",
        {
            x01: "Test",
            pageItems: "#P13_ITEM"
        },
        {
            dataType: 'text'
        });

您可以访问APEX过程中的变量,如下所示:

DECLARE
    l_test VARCHAR2(100);
BEGIN
    l_test := apex_application.g_x01 || ', ' || :P13_ITEM;
    htp.p(l_test);
END;
qq24tv8q

qq24tv8q3#

现在我可能要迟到很久了,但是我相信我已经理解了您的问题的解决方案。在您的JS代码中,您首先必须定义一个视图和一个模型。有多种方法可以做到这一点,我个人选择在交互式网格小部件上调用getCurrentView(方法 call(“getCurrentView”)widget()的缩写。interactiveGrid(“getCurrentView”)

var view = apex.region("static-id-of-your-IG").call("getCurrentView");
var model = view.model;

从那里,您可以根据您的实际需要执行许多方法(此处列出):您是否希望将所有记录发送到APEX处理,您是否希望仅发送选定的记录等。假设您只有一条记录和一个特定的列值要传递。您需要在视图和模型定义之后分配一个新变量:

var name = model.getValue( someRecord, "ENAME" );

或者,如文档所述,当模型形状记录自身时,忽略记录,因为在您的情况下:

var name = model.getValue( "ENAME" );

现在您已经获得了该值,在APEX服务器进程中,您可以将name变量作为apex_application.g_x01参数传递:

apex.server.process("your-ajax-process-name",
        {
            x01: name,
        },
        {
            dataType: "text"
        }
    )

正如前面的回答中提到的,您现在可以在 AJAX 回调过程中访问值,如下所示:

DECLARE
    l_test VARCHAR2(100);
BEGIN
    l_test := apex_application.g_x01;
    htp.p(l_test);
END;

相关问题