讲师中心 微信公众号
AI工具推荐 视频效率加速

Oracle APEX 中无需页面提交即可将客户端值传递至服务端的两种高效方案

雨瑶同学_4690

雨瑶同学_4690

发布时间:2026-07-16 20:56:26

|

902人浏览过

|

来源于php中文网

原创

Oracle APEX 中无需页面提交即可将客户端值传递至服务端的两种高效方案

在 Oracle APEX 中,可通过动态操作(DA)的“Execute Server-side Code”动作或 apex.server.process AJAX 调用,将 JavaScript 设置的页面项(如 P43_ROW_SELECT)值实时传至服务端 PL/SQL,无需整页提交,兼顾响应性与数据一致性。

在 oracle apex 中,通过 javascript(如 `$s("p43_row_select", idvalues)`)设置页面项后,该值默认仅存在于客户端,服务端无法直接访问——除非触发页面提交。但实际开发中,频繁提交会破坏用户体验。本文介绍两种不刷新页面即可安全、可靠地将客户端值(如 grid 选中行 rowid)同步至服务端 pl/sql 进程的工业级方案。

✅ 方案一:使用动态操作(Dynamic Action)+ “Execute Server-side Code”

这是最推荐、最简洁且与 APEX 框架深度集成的方式:

  1. 创建动态操作:在目标事件(如按钮点击、GRID 行选择变更)上定义 DA;
  2. 添加“Execute Server-side Code”动作;
  3. 在 PL/SQL 代码区域编写服务端逻辑(可直接引用 :P43_ROW_SELECT);
  4. 关键配置:在 DA 的 Server-side Condition 或 Items to Submit 区域,显式勾选 P43_ROW_SELECT —— 此步骤确保该页面项的当前值被序列化并随 AJAX 请求发送至服务端。

示例 PL/SQL 代码(置于 DA 的 Server-side Code 中):

DECLARE
    l_rowids apex_application.g_v01%TYPE := :P43_ROW_SELECT;
    l_rowid_list apex_t_varchar2;
BEGIN
    IF l_rowids IS NOT NULL THEN
        l_rowid_list := apex_string.split(l_rowids, ',');
        FOR i IN 1 .. l_rowid_list.COUNT LOOP
            -- 示例:根据 ROWID 更新状态
            UPDATE emp SET status = 'SELECTED' WHERE rowid = CHARTOROWID(l_rowid_list(i));
        END LOOP;
        COMMIT;
        apex_json.open_object;
        apex_json.write('success', TRUE);
        apex_json.write('count', l_rowid_list.COUNT);
        apex_json.close_object;
    END IF;
END;

⚠️ 注意事项:

Market Oracle
Market Oracle

金融事件影响分析器 — 获取突发新闻,追踪金属/石油/加密货币/股票价格,预测短中长期市场连锁反应

下载
  • 必须在 Items to Submit 中声明 P43_ROW_SELECT,否则服务端收到的值为空;
  • 若需返回结果给前端,建议启用 Fire on Page Load → No,并在 DA 的 Client-side Condition 或 Success / Failure Actions 中处理响应;
  • 所有数据库操作需显式 COMMIT(除非在自动提交模式下)。

✅ 方案二:使用 apex.server.process 手动 AJAX 调用

适用于需精细控制请求头、错误处理或跨组件通信的场景:

// 前端 JavaScript(例如绑定到自定义按钮)
function sendSelectedRowids() {
    var gridView = apex.region("emp").call("getCurrentView"),
        selectedRecords = gridView.getSelectedRecords(),
        idValues = selectedRecords.map(r => r[0]).join(',');

    // 使用 apex.server.process 发起异步请求
    apex.server.process(
        "PROCESS_SELECTED_ROWS", // 应用程序内定义的 AJAX 过程名
        {
            x01: idValues, // 可选:通过 x01–x10 传递简单参数
            p_arg_names: ["P43_ROW_SELECT"], // 显式指定页面项名
            p_arg_values: [idValues]         // 对应值
        },
        {
            success: function(pData) {
                console.log("Server returned:", pData);
                apex.message.success("已成功处理 " + pData.count + " 条记录");
            },
            error: function(xhr, status, error) {
                apex.message.alert("处理失败:" + error);
            }
        }
    );
}

对应服务端需在 Shared Components > Logic > AJAX Callbacks 中创建名为 PROCESS_SELECTED_ROWS 的过程,并在其中通过 APEX_APPLICATION.G_X01 或 V('P43_ROW_SELECT') 获取值。

? 总结对比

方式 配置复杂度 适用场景 是否需预定义 AJAX Callback
Execute Server-side Code(DA 内置) ★☆☆☆☆(极低) 页面内轻量交互、快速迭代 ❌ 否,直接写 PL/SQL
apex.server.process ★★★☆☆(中等) 复杂流程、多参数、跨区域调用 ✅ 是,需在 Shared Components 中注册

无论选择哪种方式,均避免了整页提交(apex.submit),显著提升用户体验与系统性能。实践中,优先选用 DA 的 Execute Server-side Code——它更安全(自动处理 CSRF Token)、更易维护,且与 APEX 生命周期无缝协同。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

1975

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2722

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

936

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3059

2025.09.10

ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2400

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2233

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1141

2024.09.24

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

160

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn