You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Oracle 18c APEX中apex.ajax.clob不是构造函数的错误?

解决APEX新版主题中“apex.ajax.clob is not a constructor”错误

问题根源

在Oracle APEX 5.0及后续版本中,旧版的apex.ajax.clob API已经被官方废弃,取而代之的是更灵活通用的apex.server.process方法来处理AJAX请求——这就是你切换主题后触发报错的直接原因。

修复后的完整代码

把原来的refreshMap函数替换为以下版本,核心是用新版AJAX API替代旧的apex.ajax.clob实现:

function refreshMap() {
    // 调用新版APEX AJAX方法
    apex.server.process(
        // 替换为你实际使用的AJAX进程名称(比如页面进程的名称)
        "YOUR_AJAX_PROCESS_NAME",
        {}, // 如果需要传递参数,在这里添加,示例:{ p1_task_date: apex.item("P1_TASK_DATE").getValue() }
        {
            success: function(gData) {
                // 保留你原来的业务逻辑
                if(gData.length == 0) {
                    alert("No task found.");
                    return;
                }
                if(gData=='-1') {
                    alert("Data too large to be displayed. Filter task by type or select smaller date range.");
                    return;
                }

                var actArray = gData.split("~#~");
                var bounds = new google.maps.LatLngBounds();
                for(var i=0; i < actArray.length; i++) {
                    acct = ""+actArray[i];
                    var colArray = acct.split("~@~");
                    var repStatus = colArray[5];
                    var link = '<b><u><a href="'+colArray[7]+'">'+colArray[2]+'</a></u></b>';
                    var html = '<table><tr><td style="font-weight: bold; font-size: 175%;">'+colArray[3]+'</td></tr></table><table><tr><td>&nbsp;</td></tr><tr><td><b>Task # : </b>&nbsp;</td><td>'+link+'</td></tr><tr><td align="left"><b>Subject : </b>&nbsp;</td><td>'+colArray[4]+'</td></tr><tr><td align="left"><b>Status : </b>&nbsp;</td><td>'+repStatus+'</td></tr></table>';
                    var newmarker = new google.maps.Marker({
                        position: new google.maps.LatLng(colArray[0], colArray[1]),
                        map: map,
                        icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|'+colArray[8]
                    });
                    newmarker['infowindow'] = new google.maps.InfoWindow({
                        content: html
                    });
                    google.maps.event.addListener(newmarker, 'click', function() {
                        this['infowindow'].open(map, this);
                    });
                    marker.push(newmarker);
                    bounds.extend(new google.maps.LatLng(colArray[0], colArray[1]));
                }
                map.fitBounds(bounds);
            },
            error: function(xhr, status, error) {
                // 添加错误提示,提升用户体验
                alert("An error occurred while loading map data: " + error);
            },
            dataType: "text" // 确保以纯文本格式接收后端返回的CLOB数据,匹配原有逻辑
        }
    );
}

关键修改说明

  • API替换:用apex.server.process完全替代旧的apex.ajax.clob构造函数,这是APEX新版官方推荐的AJAX调用方式
  • 数据格式指定:通过dataType: "text"保证后端返回的CLOB数据以纯文本形式接收,和你原来的处理逻辑完全兼容
  • 回调优化:拆分出success和error回调,既保留原有业务逻辑,又新增了错误处理分支
  • 进程名称替换:务必将YOUR_AJAX_PROCESS_NAME替换为你实际使用的后端AJAX进程名称(和旧版代码绑定的进程一致即可)

内容的提问来源于stack exchange,提问作者Kinjan Bhavsar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:10:08