Oracle apex ajax回调中设置的Oracle APEX页面项不会持久化

Oracle apex ajax回调中设置的Oracle APEX页面项不会持久化,oracle-apex,oracle-apex-19.1,Oracle Apex,Oracle Apex 19.1,我的ajax回调(PL/SQL)中有以下代码: 这似乎很管用。但随后调用了一个进程,该进程检查页面项和页面项是否显示为0,即使在回调中将其设置为1。我怎样才能解决这个问题 调用ajax的代码是下面的javascript,通过自定义动态操作执行: for ( var i=0; i<records.length; i++) { apex.server.process ("my_ajax_callback" ,{x01:record

我的ajax回调(PL/SQL)中有以下代码:

这似乎很管用。但随后调用了一个进程,该进程检查页面项和页面项是否显示为0,即使在回调中将其设置为1。我怎样才能解决这个问题

调用ajax的代码是下面的javascript,通过自定义动态操作执行:

for ( var i=0; i<records.length; i++) {
        apex.server.process
            ("my_ajax_callback"
            ,{x01:records[i][1]}
            ,{type:'GET', dataType: 'text', success: function( text) {}}
            );
}


apex.page.submit( 'COMPLETE_PROCESS_RECORDS' );

for(var i=0;i您没有向我们展示调用Ajax回调的代码,但基本上有服务器端(本例中为PL/SQL)和客户端(JavaScript)代码。服务器要从客户端获取值,必须在调用Ajax回调时将它们发送进来。
pData
参数的作用是:

您可以通过不同的方式访问发送到服务器端代码的值,具体取决于发送方式。例如,如果使用
x01
发送值,则可以使用
apex\u application.g\u x01
在PL/SQL代码中引用该值

当然,有时需要从服务器端到客户端获取值。为此,通常需要从PL/SQL代码发送HTTP响应。以下是发送JSON对象的示例:

apex_json.open_object();
apex_json.write('hello', 'world');
apex_json.close_object();
然后,您需要更新客户端代码以查看并使用HTTP响应将值映射到您需要的页面/DOM的任何部分

这是非常典型的,如果您使用动态操作框架而不是原始JavaScript,APEX团队会使它变得非常简单。有一个名为Execute PL/SQL的操作,它具有名为要提交的项和名为要返回的项,可以为您完成繁重的工作


不需要调用
apex\u util.set\u session\u state
。在执行PL/SQL时,apex将首先识别绑定变量,并在执行代码之前从session state中进行设置。然后,在执行后,它将查看是否有任何值发生了更改,如果是,则自动将它们映射回持久会话状态。ajax是c来自自定义动态操作的javascript调用。我将代码添加到问题中。您显示的代码有几个问题。1)您正在循环中调用
apex.server.process
。这是不好的,因为当您可以只拨打一个电话时,您可能会对数据库进行大量不必要的往返。2) 虽然循环是同步的,但对
apex.server.process
的调用不是同步的,因此您将在对
apex.server.process
的所有调用完成之前提交页面。如果有任何错误,你永远不会知道。通常,您希望在Ajax调用(如果有)的
success
回调中调用
apex.page.submit
,我无法真正调用submit页面,因为并非所有记录都已处理。我有什么选择?在我能帮忙之前,我需要更好地了解你想做什么。这个问题是从“ajax回调中设置的页面项不会持久”开始的,但很明显,我们在这里的方向不同。请描述此页面显示的内容、您使用JavaScript处理的内容、为什么需要将值从Ajax流程映射回页面、为什么需要提交页面等。当我更好地理解您试图做什么时,我可以提供如何最好地完成此操作的建议。
apex_json.open_object();
apex_json.write('hello', 'world');
apex_json.close_object();