Oracle APEX中交互式网格AJAX回调无法正常执行问题求助
Oracle APEX中交互式网格AJAX回调无法正常执行问题求助
各位APEX开发者们,我最近碰到一个棘手的问题,折腾了好久都没解决,想请教下大家的思路:
我在Oracle APEX里有一个ID为118_ig的交互式网格,需要用JavaScript把网格里数字的逗号替换成点,同时获取页面项:P118_ID的值,然后通过AJAX调用后台的PL/SQL进程来处理数据。从控制台日志来看,JS这边的数据处理是正常的,但后台的回调就是没按预期工作。
先贴我的JavaScript代码:
var v_amount = []; var grid = apex.region("118_ig").widget(); var gridView = grid.interactiveGrid("getViews", "grid"); var model = gridView.model; var p118_id = apex.item("P118_ID").getValue(); model.forEach(function (record) { console.log("Record structure:", record); if (record[1] !== undefined) { let value= String(record[1]).replace(/,/g, '.'); if (!isNaN(value)) { v_amount.push(value); } } }); apex.server.process('split_the_bill_btn_ig_proc', { f01: p118_id, f02: v_amount }, { success: function (data) { console.log("Process succeeded:", data); }, error: function (jqXHR, textStatus, errorThrown) { console.error("Process failed:", textStatus, errorThrown); } } );
对应的PL/SQL AJAX回调代码(主要是把数组转成CSV,再传给自定义包):
DECLARE l_csv VARCHAR2(32767); BEGIN l_csv := ''; FOR i IN 1 .. apex_application.g_f02.COUNT LOOP IF i > 1 THEN l_csv := l_csv || ','; END IF; l_csv := l_csv || apex_application.g_f02(i); END LOOP; DBMS_OUTPUT.PUT_LINE('CSV Result: ' || l_csv); SPLIT_BILL_PKG.split_the_amount(apex_application.g_f01(1), SPLIT_BILL_PKG.amounts_type(l_csv)); END;
目前的问题:
- 控制台显示JS已经正确收集到数据,AJAX请求也返回成功,但后台的包逻辑就是没执行(或者说没生效)
- 我手动在SQL命令窗口里调用
SPLIT_BILL_PKG.split_the_amount是完全正常的,数据能正确处理 - 我现在搞不清楚在
apex.server.process里传参数时,应该用f01这类还是x01这类,同事说有规则但我没找到明确说明,会不会是参数类型的问题?
有没有大佬能帮我排查下可能的原因?比如参数传递的问题,或者交互式网格数据获取的问题?
备注:内容来源于stack exchange,提问作者krumpirko8888
相关产品推荐
相关产品推荐

